Verschiedene Möglichkeiten, um eine variable zu initialisieren
Soweit ich gesehen habe gibt es zwei Möglichkeiten zum initialisieren Sie eine variable mit dem output eines Prozesses. Gibt es einen Unterschied zwischen diesen beiden?
ex1=`echo 'hello world'`
ex2=$(echo 'hello world')
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bekommen Sie denselben Effekt.
Den
$()
wird empfohlen, da es besser lesbar und erleichtert das nest ein$()
in ein anderes$()
.Update:
Den
$()
syntax ist eine POSIX-1003.1-standard (Ausgabe 2004). Aber auf einigen älteren UNIX-Systeme (SunOS, HP-UX, etc.) die/bin/sh
versteht es nicht.Müssen Sie möglicherweise verwenden, " backtick "`" statt oder verwenden Sie eine andere shell (in der Regel ist es ksh) wenn Sie Ihr Skript um die Arbeit auf eine solche Umgebung.
Wenn Sie nicht wissen, welche syntax zu verwenden - verwenden Sie
$()
. Backtick-syntax ist veraltet.sehen http://mywiki.wooledge.org/BashFAQ/082
beachten Sie auch, dass
$()
POSIX-so läuft es auf sh.Es ist ein weiterer Weg, um eine variable zu initialisieren, um eine Standard ein, wenn Sie noch nicht initialisiert es sich.
$1
,$2
und hilft Ihr Skript auch ausgeführt, wenn diese Werte nicht explizit übergeben. Durch diese können implizit setzen Sie Ihre Variablen laufen auf default Werte wenn ein Wert noch nicht zugewiesen. Das spart etwa 4-5 Zeilen code, wo Sie prüfen, ob die variable zugewiesen wurde oder nicht, so etwas wieif [ -z "$var" ] then; …