In Abschnitt 3.1.2.3 mit dem Titel Double Quotes heißt es im Bash-Handbuch:
Das Einschließen von Zeichen in doppelte Anführungszeichen ('"') behält den Literalwert aller Zeichen in den Anführungszeichen bei, mit Ausnahme von '$', '', '\' und, wenn die Verlaufserweiterung aktiviert ist, '!'.
Im Moment beschäftige ich mich mit dem einfachen Anführungszeichen ( '
).
Die spezielle Bedeutung, die im vorhergehenden Abschnitt, Abschnitt 3.1.2.2 beschrieben wurde, ist:
Das Einschließen von Zeichen in einfache Anführungszeichen (
'
) behält den Literalwert jedes Zeichens in den Anführungszeichen bei. Ein einfaches Anführungszeichen darf nicht zwischen einfachen Anführungszeichen stehen, auch wenn ein Backslash vorangestellt ist.
Kombiniert man die beiden Expositionen,
echo "'$a'"
Wenn eine Variable a
nicht definiert ist (daher $a
= Null-Zeichenfolge), sollte sie $a
auf dem Bildschirm gedruckt werden ''
, da sie eine besondere Bedeutung hat und $
vor der besonderen Interpretation schützen würde . Stattdessen wird gedruckt ''
. Warum so?
’, ‘\’, and, when history expansion is enabled, ‘!’." in the manual. But now reading it again I realized the second character is not single quote, ("'") but tilde ("
") beibehalten .Sie missverstehen die Dokumentation:
Mittel „seine besondere Bedeutung zu haben , “ dass es sich speziell nicht wörtlich interpretiert. Einfache Anführungszeichen verhindern
$
das Erweitern. Einfache Anführungszeichen innerhalb von doppelten Anführungszeichen sind jedoch wörtliche Zeichen, dh sie haben keine Auswirkung auf irgendetwas. Wenn Sie die Ausgabe möchten$a
, müssen Sieecho '$a'
.quelle