Ich sehe häufig Tutorials im Internet oder Posts auf dieser Site, in denen die folgenden Zeichen in der Befehlszeile verwendet werden. Oft scheint es, dass sie für ziemlich ähnliche Zwecke verwendet werden. Was sind die Unterschiede zwischen ihnen, wenn sie in der Befehlszeile oder für die Shell-Programmierung verwendet werden? Zu welchem Zweck verwende ich welche von ihnen?
" " double quotes
' ' single quotes
` ` backticks
command-line
bash
NES
quelle
quelle
\
wird in einfachen Anführungszeichen immer wörtlich behandelt, auch wenn es vor a steht'
. Nach einer Eröffnung'
wird die nächste'
immer als Schlusszitat interpretiert. So etwas wie das Zitieren'
in einer Zeichenfolge in einfachen Anführungszeichen kann erreicht werden, indem das Zitieren beendet,'
einzeln ausgeblendet und das Zitieren erneut gestartet wird. Das heißt, während\'
es nicht zwischen dem Öffnen und Schließen von'
Zeichen'\''
funktioniert , funktioniert es. (Siehe Gilles ' Korrektur für einen meiner Posts, als ich denselben FehlerDies wird im entsprechenden Abschnitt des Bash-Handbuchs sehr gut erklärt . Kurz gesagt, alles in einfachen Anführungszeichen wird wörtlich interpretiert. Also zum Beispiel:
Vergleichen Sie das mit den nicht zitierten Versionen:
Doppelte Anführungszeichen ermöglichen eine variable Erweiterung (auch die Erweiterung des Verlaufs und einige andere Dinge). Grundsätzlich verwenden Sie sie, wenn Sie mit etwas zu tun haben, das Sie erweitert sehen möchten. Zum Beispiel:
Mit anderen Worten, einfache Anführungszeichen schützen einen String vollständig vor der Shell, während doppelte Anführungszeichen einige Dinge (z. B. Leerzeichen) schützen, aber ermöglichen, dass Variablen und Sonderzeichen korrekt erweitert / interpretiert werden.
quelle
Einfache Anführungszeichen (
''
) werden verwendet, um den Literalwert jedes in Anführungszeichen eingeschlossenen Zeichens beizubehalten.Bei Verwendung von doppelten Anführungszeichen (
""
) wird der$
Literalwert aller eingeschlossenen Zeichen beibehalten, mit Ausnahme des Dollarzeichens ( ), der Backticks (einfache Anführungszeichen rückwärts``
) und des Backslash (\
).Wenn
``
die Shell in Back-Ticks ( ) eingeschlossen ist, bedeutet dies "die Ausgabe des Befehls in den Back-Ticks". Dies wird als "Befehlsersetzung" bezeichnet, da die Ausgabe des Befehls den Befehl selbst ersetzt.Verweise:
quelle
Einfache Anführungszeichen verhindern die variable Erweiterung, während doppelte Anführungszeichen dies zulassen.
quelle
Ich spreche nur im Allgemeinen, aber:
""
- Wird verwendet, um einige Informationen vor der Ausgabe zu verarbeiten. (Wie in PHP.)name=NESS; echo "Hello my name is $name"
gibt aus:Hello my name is NESS
''
- Wird verwendet, um die Ausgabe so anzuzeigen, wie sie ist. (Auch wie in PHP.)Hello my name is $name
Der Unterschied zwischen doppelten und einfachen Anführungszeichen besteht also darin, dass doppelte Anführungszeichen die Variable verarbeiten und den Wert anzeigen, während einfache Anführungszeichen den Namen der Variablen ohne Verarbeitung anzeigen.
``
- Wird zum Zitieren von Befehlen verwendet, die später einer anderen Variablen zugewiesen werden.quelle
Einfache Anführungszeichen enthalten einen Wert, der wörtlich zu verstehen ist: Alle Arten von Erweiterungen werden unterdrückt. In der Regel verwendet , wenn der Wert enthält oder kann Leerraum (Leerzeichen, Tabulator, new-line) oder Sonderzeichen (
$
,\
,`
) , dass der Benutzer nicht will , speziell von der Shell erweitert / behandelt werden.Doppelte Anführungszeichen enthalten einen Wert, der Variablen enthält, und die Zeichen werden ersetzt. Erforderlich, wenn die Ausgabe Leerzeichen enthalten kann und als Einzelwert zugewiesen werden muss.
In Anführungszeichen steht ein Befehl, dessen Ergebnisse als Wert gesucht werden. Neuere Shells erlauben die Verwendung von
$(...)
anstelle von`...`
. Ich bevorzuge die neuere Methode.Der folgende Code hilft möglicherweise zu verstehen, was passiert.
quelle