Ich bin damit beschäftigt, ein Shell-Skript (mit Bash) zu schreiben, in dem ich eine Variable aus dem zurückgegebenen Ergebnis eines anderen Befehls füllen muss.
Ich verwende also eine Syntax wie diese:
VAR=`command 2>/dev/null`
Bei der Suche nach Informationen zu Skript-Shells stellte ich jedoch häufig fest, dass das oben Genannte auch mit der folgenden Syntax erreicht werden kann:
VAR=$(command 2>/dev/null)
Beide arbeiten für mich (ich habe in beiden Fällen das erwartete Ergebnis erhalten) und ich frage mich daher, ob ich beide Formulare noch austauschbar verwenden kann oder ob ich mich an ein Formular halten muss, um sicherzugehen, dass ich mit der zukünftigen Entwicklung von kompatibel bin Shell?
command-line
Justin
quelle
quelle
Antworten:
Verwenden Sie Dollar. Backticks sind teilweise veraltet , da ihre Verwendung komplizierter ist (siehe Link) und sie keine Vorteile bieten, es sei denn, Sie spielen Code-Golf und müssen unbedingt einen einzelnen Charakter speichern. Sie werden wahrscheinlich nicht so schnell aus beliebten Muscheln entfernt, sodass Sie beide vorerst sicher verwenden können.
quelle
Halten Sie sich an die Dollarzeichen-Notation,
$()
wann immer Sie können. Backticks werden umständlich / verwirrend, wenn Sie verschachtelte Zitate erstellen müssen. Ex:Das Ersetzen der Backticks durch
$()
die gleichen Ergebnisse führt zu derselben Ausgabe und ist leichter zu lesen (weniger Anführungszeichen für verschiedene Winkel):Das und jedes Anführungszeichen (einfaches Anführungszeichen, doppeltes Anführungszeichen, Backtick) bedeutet etwas anderes in der Shell, sodass die Verwendung von $ dazu beitragen kann, ein Maß an Komplexität zu beseitigen. Und der Entwickler, der Ihnen folgt, wird es Ihnen danken, denn es fällt ihm leichter, herauszufinden, was Sie getan haben.
quelle