(6 risposte)
Chiuso 7 anni fa.
Qual è la differenza nel raccogliere l'output di un comando nello script Shell usando `command` e $(command)? Ad esempio:
# IP1=$(ifconfig eth0 | grep -e "inet " | cut -d: -f2 | awk '{print $1}')
# IP2=`ifconfig eth0 | grep -e "inet " | cut -d: -f2 | awk '{print $1}'`
# echo $IP1 $IP2
> 192.241.145.112 192.241.145.112
Risposta accettata:
La differenza principale è che i backtick non si annidano:non puoi incorporare un comando backtick all'interno di un altro. (In realtà puoi, ma devi fare il backslash-escape loro, e da lì in poi diventa più complicato.) Questa è stata, credo, la motivazione principale per inventare la nuova sintassi $(command)
.
Il $(command)
la sintassi fornisce anche una comoda scorciatoia per interpolare il contenuto di un file:$(<filename)
è equivalente a $(cat filename)
.
Un'altra differenza:$()
non è supportato da alcune shell comuni.