Es gibt zwei verschiedene Bedeutungen von "veraltet".
veraltet sein: (hauptsächlich von einer Software-Funktion) verwendbar sein, aber als veraltet angesehen und am besten vermieden werden, typischerweise weil es abgelöst wurde.
- New Oxford American Dictionary
Durch diese Definition Backticks sind veraltet.
Veralteter Status kann auch darauf hinweisen, dass das Feature in Zukunft entfernt wird.
- Wikipedia
Nach dieser Definition werden Backticks nicht veraltet.
Wird weiterhin unterstützt:
Unter Bezugnahme auf die Open Group-Spezifikation für Shell-Befehlssprachen , insbesondere Abschnitt "2.6.3 Befehlssubstitution", ist ersichtlich, dass beide Formen der Befehlssubstitution, Backticks ( `..cmd..`
) oder Dollar Parens ( $(..cmd..)
), weiterhin unterstützt werden, soweit die Spezifikation dies zulässt .
Auszug
Durch die Befehlsersetzung kann die Ausgabe eines Befehls anstelle des Befehlsnamens selbst ersetzt werden. Die Befehlsersetzung erfolgt, wenn der Befehl wie folgt beigefügt ist:
$(command)
or (backquoted version):
`command`
Die Shell erweitert die Befehlsersetzung, indem sie den Befehl in einer Subshell-Umgebung ausführt (siehe Shell-Ausführungsumgebung) und die Befehlsersetzung (Befehlstext plus $()
Anführungszeichen oder Anführungszeichen) durch die Standardausgabe des Befehls ersetzt und Sequenzen von einem oder mehreren entfernt <newline> Zeichen am Ende der Ersetzung. Eingebettete <newline> -Zeichen vor dem Ende der Ausgabe werden nicht entfernt. Sie können jedoch als Feldbegrenzer behandelt und während der Feldaufteilung entfernt werden, je nach dem Wert von IFS und der gültigen Anführungszeichen. Wenn die Ausgabe null Bytes enthält, ist das Verhalten nicht angegeben.
Innerhalb des Befehlsersetzungsstils mit Anführungszeichen behält <Backslash> seine wörtliche Bedeutung bei, es sei denn, es folgt: '$', ' \`
' oder <Backslash> . Die Suche nach dem passenden Backquote wird durch das erste nicht zitierte Backquote ohne Escapezeichen erfüllt. Wenn bei dieser Suche ein nicht maskiertes Backquote in einem Shell-Kommentar, einem Here-Document, einer eingebetteten Befehlsersetzung des $(command)
Formulars oder einer Zeichenfolge in Anführungszeichen gefunden wird, treten undefinierte Ergebnisse auf. Eine Zeichenfolge in einfachen oder doppelten Anführungszeichen, die in der `...`
Sequenz beginnt, aber nicht endet, " " führt zu undefinierten Ergebnissen.
Mit dem $(command)
Formular bilden alle Zeichen, die auf die offene Klammer bis zur passenden schließenden Klammer folgen, den Befehl. Für den Befehl kann ein beliebiges gültiges Shell-Skript verwendet werden, mit Ausnahme eines Skripts, das ausschließlich aus Umleitungen besteht und nicht angegebene Ergebnisse liefert.
Warum sagen dann alle, dass Backticks veraltet sind?
Da die meisten der Anwendungsfälle sollte die Verwendung des Dollars werden machen parens statt Backticks bilden. (Im obigen ersten Sinne veraltet.) Viele der seriösesten Websites (einschließlich U & L) geben dies ebenfalls an, so dass es sich um fundierte Ratschläge handelt. Dieser Rat sollte nicht mit einem nicht existierenden Plan verwechselt werden, die Unterstützung für Backticks von Muscheln zu entfernen.
HINWEIS: Diese dritte Auszug (oben) geht auf mehrere Situationen zu zeigen , wo Backticks wird einfach nicht funktionieren, aber die neuere Dollar Pars Verfahren der Fall ist, mit dem folgenden Absatz beginnen:
Darüber hinaus unterliegt die Syntax in Anführungszeichen historischen Einschränkungen für den Inhalt des eingebetteten Befehls. Während das neuere "$ ()" - Formular alle gültigen eingebetteten Skripte verarbeiten kann, kann das Formular mit Anführungszeichen einige gültige Skripte, die Anführungszeichen enthalten, nicht verarbeiten.
Wenn Sie diesen Abschnitt weiterlesen, werden die Fehler hervorgehoben, um zu zeigen, wie sie bei Verwendung von Backticks fehlschlagen würden, arbeiten Sie jedoch mit der neueren Dollar-Parens-Notation.
Schlussfolgerungen
Es ist also vorzuziehen, dass Sie Dollar-Parens anstelle von Backticks verwenden, aber Sie verwenden nicht wirklich etwas, das technisch "veraltet" ist, wie in "Das wird irgendwann nicht mehr funktionieren".
Nachdem Sie dies alles gelesen haben, sollten Sie die Möglichkeit haben, Dollar-Parens zu verwenden, es sei denn, Sie benötigen ausdrücklich die Kompatibilität mit einer echten Original-Bourne-Shell, die nicht von POSIX stammt.
cd
in ein Verzeichnis für ein Beispiel , warum$(...)
Schreibweise ist einfacher zu benutzen als verschachtelte Rück Anführungszeichen.