932 Stimmen

Was sind die Unterschiede zwischen einfachen und doppelten Anführungszeichen in Bash?

Was sind in Bash die Unterschiede zwischen einfachen Anführungszeichen ('') und doppelten Anführungszeichen ("")?

3 Stimmen

Siehe dazu (eine mögliche plattformübergreifende Dublette): Was ist der Unterschied zwischen "...", '...', $'...' und $"..." Anführungszeichen? von Unix & Linux Stack Exchange.

3 Stimmen

Der Titel sagt Bash, aber das gilt wirklich für jede Bourne-kompatible Shell (klassische Bourne-Shell, POSIX sh, ash, dash, ksh, und - mit einigen Vorbehalten - zsh).

6voto

a_r Punkte 460

Es gibt einen klaren Unterschied zwischen der Verwendung von ' ' und " ".

Wenn ' ' um irgendetwas herum verwendet wird, erfolgt keine "Transformation oder Übersetzung". Es wird so gedruckt wie es ist.

Bei " " wird alles, was es umgibt, in seinen Wert "übersetzt oder transformiert".

Unter Übersetzung/ Transformation verstehe ich Folgendes: Alles innerhalb der einfachen Anführungszeichen wird nicht in ihre Werte "übersetzt". Sie werden so übernommen, wie sie innerhalb der Anführungszeichen sind. Beispiel: a=23, dann wird echo '$a' $a auf der Standardausgabe produzieren. Während echo "$a" 23 auf der Standardausgabe produzieren wird.

0 Stimmen

Diese Antwort ist ziemlich verwirrend und führt nichts Neues zu den bereits guten Antworten hinzu.

2 Stimmen

Dies war meiner Meinung nach eine kurze prägnante Antwort, ohne zu langatmig zu sein, die für mich leicht verständlich war. Bei der Übersetzung/Transformation meinen sie doppelte Anführungszeichen werden die Variable erweitern, während einfache Anführungszeichen die Variable nicht erweitern werden.

2 Stimmen

Was du als "Transformation oder Übersetzung" bezeichnest, wird normalerweise als Interpolation bezeichnet. Der Ausdruck 'foo $bar baz' ist einfach die wörtliche Zeichenfolge foo $bar baz, während "foo $bar baz" den Wert der Variablen bar in die Zeichenfolge zwischen den wörtlichen Symbolen foo und baz mit Leerzeichen dazwischen interpoliert.

-4voto

user2297550 Punkte 2727

Es wird eine minimale Antwort benötigt, damit die Leute problemlos starten können, ohne viel Zeit wie ich zu verbringen.

Das Folgende ist überraschenderweise (für diejenigen, die nach einer Antwort suchen) ein vollständiger Befehl:

$ echo '\' 

dessen Ausgabe ist:

\ 

Backslashes haben überraschenderweise selbst für langjährige Benutzer von bash keine Bedeutung innerhalb von einfachen Anführungszeichen. Ebenso wenig wie sonst etwas.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X