(6 réponses)
Fermé il y a 7 ans.
Quelle est la différence entre collecter une sortie de commande dans un script Shell en utilisant `command` et $(command) ? Par exemple :
# 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
Réponse acceptée :
La principale différence est que les backticks ne s'imbriquent pas :vous ne pouvez pas intégrer une commande backticked dans une autre. (En fait, vous pouvez, mais vous devez les échapper par une barre oblique inverse, et cela devient plus poilu à partir de là.) C'était, je crois, la principale motivation pour proposer la nouvelle syntaxe $(command)
.
Le $(command)
fournit également un raccourci pratique pour interpoler le contenu d'un fichier :$(<filename)
est équivalent à $(cat filename)
.
Autre différence :$()
n'est pas pris en charge par certains shells courants.