Was ist der Unterschied zwischen einfachen und doppelten Anführungszeichen in der Bash-Shell?
Das Einfügen von Text in Anführungszeichen ist in der Befehlszeile eine ziemlich übliche Praxis, insbesondere wenn es sich um Dateien handelt, die Leerzeichen in den Namen enthalten. Woher wissen Sie jedoch, ob Sie einfache oder doppelte Anführungszeichen verwenden sollen? Werfen wir einen Blick auf den Unterschied und wann Sie eins gegen das andere verwenden sollten.
Die allgemeine Regel lautet, dass doppelte Anführungszeichen immer noch die Erweiterung von Variablen innerhalb der Anführungszeichen zulassen, und einfache Anführungszeichen nicht. Weiter lesen.
Zitate mit einfachem Text
Wenn Sie nur ein paar Wörter mit Text einschließen, ist es egal, welchen Sie verwenden, da beide gleich funktionieren. Diese beiden Befehle erstellen beispielsweise ein Verzeichnis mit dem Namen Test Directory:
mkdir "Test Directory"
mkdir 'Test Directory'
Erfahrene Typen werden wahrscheinlich feststellen, dass Sie auch mkdir Test \ Directory verwenden könnten, wenn Sie dies wollten.
Shell Variable Expansion
Der Unterschied zwischen einfachen und doppelten Anführungszeichen wird wichtiger, wenn Sie mit Variablen in der Befehlszeile arbeiten. Standardmäßig erweitert bash eine Variable wie $ test in die vollständige Zeichenfolge. Zuerst weisen wir die Variable zu:
test = "Dies ist ein Test"
Jetzt können Sie diese Variable in der Befehlszeile verwenden, die einfach ausgegeben werden soll Dies ist ein Test zur Konsole:
echo $ test
Hier wird der Unterschied zwischen doppelten und einfachen Anführungszeichen deutlicher: Wenn Sie einfache Anführungszeichen verwenden, werden die Variablen nicht erweitert. Wenn Sie zum Beispiel diesen Befehl ausführen:
echo '$ test'
Wenn Sie einfache Anführungszeichen verwenden, wird in der Befehlszeile nur "$ test" angezeigt. Wenn Sie doppelte Anführungszeichen verwenden, wird dies jedoch ordnungsgemäß ausgegeben:
Dasselbe funktioniert, wenn Sie das Zeichen 'verwenden, um einen Befehl in der Befehlszeile zu erweitern. Angenommen, Sie möchten die pwd Befehl aus einem anderen Befehl heraus - Sie würden Backticks verwenden, um der Shell mitzuteilen, dass sie erweitert werden soll:
echo 'pwd' / test
Wenn Sie sich in Ihrem Ausgangsordner befanden, sehen Sie eine Ausgabe, die folgendermaßen aussieht:
/ home / geek / test
Angenommen, Sie befinden sich in einem Ordner, in dem sich ein Leerzeichen befindet, und Sie möchten mit dem Befehl ln eine symbolische Verknüpfung zu einer Datei im aktuellen Verzeichnis erstellen. Sie müssen normalerweise den vollständigen Pfad angeben, wenn Sie den Befehl ln verwenden. Daher ist es viel einfacher, 'pwd' zu verwenden, um die Eingabe zu speichern.
Sehen Sie sich an, was passiert, wenn Sie den Befehl versuchen und verwenden, ohne ihn in Anführungszeichen zu setzen:
ln -s 'pwd' / test / home / geek / linkedname
Stattdessen müssen Sie in Anführungszeichen setzen:
ln -s "'pwd' / dateiname" / some / other / path
Nehmen wir für ein konkretes Beispiel an, dass wir eine Ordnerstruktur wie dieses Beispiel haben, in der alle Dateinamen Leerzeichen enthalten:
Da der Befehl entpacken die Verwendung von * für alle Dateien nicht unterstützt, müssen Sie stattdessen den Befehl for verwenden. Hier werden die Dinge interessant:
für f in * .zip; entpacken Sie $ f; done
Hoppla! Sieht aus wie es nicht funktioniert hat.
Wir müssen stattdessen doppelte Anführungszeichen um die $ f -Variable verwenden:
für f in * .zip; entpacken Sie "$ f"; fertig
Jedes Mal, wenn der Befehl for die Schleife durchläuft, wird ein Befehl wie dieser ausgeführt:
entpacken Sie "test 1.zip"
Natürlich würde es durchlaufen und für jede Datei im Verzeichnis einen ähnlichen Befehl ausführen.
Lassen Sie uns überprüfen
Nun, da wir die Beispiele durchgegangen sind, werden wir nur schnell überprüfen, ob Sie es verpasst haben:
Anführungszeichen
- Verwenden Sie diese Option, wenn Sie Variablen einschließen oder die Shell-Erweiterung innerhalb einer Zeichenfolge verwenden möchten.
- Alle Zeichen innerhalb dieses Elements werden als normale Zeichen interpretiert, mit Ausnahme von $ oder ', die in der Shell erweitert werden.
Einzelzitate
- Alle Zeichen in einfachen Anführungszeichen werden als Zeichenfolge interpretiert.
Und damit endet die Lektion der Zitate. Verwenden Sie sie weise.