2013-10-19 12 views
14

In bash, sia () sia $() creano una subshell.

Qual è la differenza tra loro? Quali sono i loro usi tipici?

risposta

15

() crea semplicemente un comando composto, eseguendo i comandi all'interno delle parentesi. $() fa lo stesso, ma sostituisce anche l'output.

Dalla documentazione:

  1. (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.

  2. 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.

+3

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'. –

Problemi correlati