Podshell
Výraz
$(command)
vede ke spuštění příkazu command a nahrazení výrazu standardním výstupem
vzniklým tímto spuštěním. Například
> echo date
date
> echo $(date)
Wed Aug 23 09:44:24 CEST 2023
Na prvním řádku echo vypíše řetězec date. Na druhém řádku ovšem shell spustí
program date a jeho výstup umístí jako argument echo, takže potom vlastně
spouštíme
> echo Wed Aug 23 09:44:24 CEST 2023
Wed Aug 23 09:44:24 CEST 2023
Typické použití ve skriptech je přiřazení výsledku do proměnné
> TODAY=$(date +%A)
> echo Today is ${TODAY}
Today is Wednesday
Technicky shell spouští nový proces shellu, tzv. podshell, ve kterém příkaz
spustí. V podshellu tak neexistují proměnné vytvořené v rodičovském shellu.1
Alternativní syntax je vložení command mezi zpětné apostrofy (`). Tuto
syntax nedoporučuji a v textu ji používat nebudeme.
-
Toto omezení lze různými způsoby obejít, například pomocí exportování proměnných. ↩