GNU/Linux >> Linux Esercitazione >  >> Linux

Differenza tra ${} e $() in Bash

$(cmd) sostituisce il risultato di cmd come stringa, mentre (cmd; cmd) eseguire un elenco di comandi in un sottoprocesso.

Se vuoi mettere l'output di uno o più comandi in una variabile usa il modulo $( cmd ).

Tuttavia, se vuoi eseguire un certo numero di comandi e trattarli come una singola unità, usa la forma ().

Quest'ultimo è utile quando vuoi eseguire una serie di comandi in background:

(git pull; make clean; make all) &

Queste sono cose diverse.

$() valuta un'espressione (eseguendo un comando) come `` (backtick)

> (echo ls)
ls

> $(echo ls)
file1  file2

> `echo ls`
file1  file2

> echo $(echo ls)
ls

Sono diversi, ma c'è una relazione mnemonica tra loro.

(...) è un comando che avvia una nuova subshell in cui vengono eseguiti i comandi della shell.

$(...) è un'espressione che avvia una nuova subshell, la cui espansione è l'output standard prodotto dai comandi che esegue.

Questo è simile a un'altra coppia comando/espressione in bash :((...)) è un'istruzione aritmetica, mentre $((...)) è un'espressione aritmetica.


Linux
  1. La differenza tra i comandi di arresto e arresto?

  2. La differenza tra [[ $a ==Z* ]] e [ $a ==Z* ]?

  3. Differenza tra Snat e Masquerade?

  4. Differenza tra $HOME e '~' (tilde)?

  5. differenza tra cgroup e namespace

La differenza tra più, meno e la maggior parte dei comandi

Differenza tra la definizione di variabili Bash con e senza esportazione

Differenza tra apt e apt-get spiegato

Spiegato! La differenza tra i comandi grep, egrep e fgrep

Qual è la differenza tra i comandi kill e killall?

Qual è la differenza tra &> e >&in bash?