(6 Antworten)
Vor 7 Jahren geschlossen.
Was ist der Unterschied beim Sammeln einer Befehlsausgabe im Shell-Skript mit `command` und $(command)? Zum Beispiel:
# 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
Akzeptierte Antwort:
Der Hauptunterschied besteht darin, dass Backticks nicht verschachtelt sind:Sie können einen Backtick-Befehl nicht in einen anderen einbetten. (Eigentlich können Sie das, aber Sie müssen sie mit Backslash-Escapezeichen versehen, und von da an wird es haariger.) Das war, glaube ich, die Hauptmotivation für die Entwicklung der neueren Syntax $(command)
.
Der $(command)
Syntax bietet auch eine praktische Abkürzung zum Interpolieren des Inhalts einer Datei:$(<filename)
entspricht $(cat filename)
.
Ein weiterer Unterschied:$()
wird von einigen gängigen Shells nicht unterstützt.