In bash, sia ()
sia $()
creano una subshell.
Qual è la differenza tra loro? Quali sono i loro usi tipici?
In bash, sia ()
sia $()
creano una subshell.
Qual è la differenza tra loro? Quali sono i loro usi tipici?
()
crea semplicemente un comando composto, eseguendo i comandi all'interno delle parentesi. $()
fa lo stesso, ma sostituisce anche l'output.
Dalla documentazione:
(list)
list
viene eseguita in un ambiente di subshell ... assegnazioni variabile e incorporate comandi che influenzano l'ambiente della shell non rimangono valide anche dopo il completamento del comando . Lo stato di ritorno è lo stato di uscita di list
.
Sostituzione di comando
La sostituzione di comando permette l'output di un comando per sostituire il nome del comando. Ci sono due forme:
$(command)
o
`command`
Bash effettua l'espansione eseguendo command
e rimpiazzando la sostituzione di comando con lo standard output del comando, con ogni newline finale cancellate.
Un momento "aha"! "Sostituzione del comando" è il modo in cui possiamo assegnare l'output di un comando a una variabile, ad es. con 'RESULT = $ (comando)', l'output di '$ (comando)' sostituisce il comando e viene quindi assegnato a 'RISULTATO'. –