GNU/Linux >> Znalost Linux >  >> Linux

Rozdíl mezi ${} a $() v Bash

$(cmd) nahradí výsledek cmd jako řetězec, zatímco (cmd; cmd) spustit seznam příkazů v podprocesu.

Pokud chcete vložit výstup jednoho nebo více příkazů do proměnné, použijte formulář $( cmd ).

Pokud však chcete spustit několik příkazů a zacházet s nimi jako s jednou jednotkou, použijte formulář ().

Poslední možnost je užitečná, když chcete spouštět sadu příkazů na pozadí:

(git pull; make clean; make all) &

To jsou různé věci.

$() vyhodnotí výraz (provedení příkazu), jako je `` (backticks)

> (echo ls)
ls

> $(echo ls)
file1  file2

> `echo ls`
file1  file2

> echo $(echo ls)
ls

Jsou různé, ale existuje mezi nimi mnemotechnický vztah.

(...) je příkaz, který spouští nový subshell, ve kterém se spouštějí příkazy shellu.

$(...) je výraz, který spouští nový subshell, jehož expanze je standardní výstup vytvářený příkazy, které spouští.

To je podobné jinému páru příkaz/výraz v bash :((...)) je aritmetický příkaz, zatímco $((...)) je aritmetický výraz.


Linux
  1. Rozdíl mezi příkazy „su“ a „su -“ v Linuxu

  2. Rozdíl mezi přihlašovacím prostředím a nepřihlašovacím prostředím?

  3. Rozdíl mezi příkazy zastavení a vypnutí?

  1. Rozdíl mezi [[ $a ==Z* ]] a [ $a ==Z* ]?

  2. Rozdíl mezi Snat a Masquerade?

  3. rozdíl mezi cgroups a jmennými prostory

  1. Rozdíl mezi ‚A‘ na příkazovém řádku (bash)??

  2. Rozdíl mezi Eot a Eof?

  3. Jaký je rozdíl mezi &> a >&v bash?