(1 Antwort)
Vor 2 Jahren geschlossen .
Früher habe ich ''
verwendet und ""
(einfache und doppelte Anführungszeichen) austauschbar auf der Befehlszeile, aber ich habe kürzlich bemerkt, dass '$HOME/some/dir'
nicht expandiert, während "$HOME/some/dir"
ist. Ich habe ein bisschen herumgesucht und diesen ""
gefunden erlaubt einige Schutz von Sonderzeichen, während ''
ermöglicht vollen Schutz. Welche anderen Zeichen werden also durch ''
geschützt? und nicht ""
?
EDIT:Was sind praktisch Situationen, in denen diese Unterschiede signifikant sein könnten?
Akzeptierte Antwort:
Werfen Sie einen Blick auf die Bash-Manpage. Es gibt einen ganzen Abschnitt über das Zitieren. Da dies unter der GFDL lizenziert ist, die nicht mit der hier verwendeten CC-BY-SA-Lizenz kompatibel ist, werde ich nicht alles zitieren, aber wirklich zu lesen, ist die definitivste Antwort.
Zusammenfassend lässt sich sagen, dass einfache Anführungszeichen jede Interpretation stoppen – die Zeichenfolge wird wörtlich wiedergegeben. Doppelte Anführungszeichen verlassen $
(Dollarzeichen), ` (Backquote) als Sonderzeichen und (Backslash) als Sonderzeichen, wenn bestimmte andere Zeichen folgen. Und
!
wird speziell behandelt, wenn die Verlaufserweiterungsfunktion aktiviert ist (was standardmäßig der Fall ist).
In der Praxis ist das $
ist die große Sache, da man oft die verschiedenen Erweiterungen haben möchte, die es ermöglicht (Variablen und mehr), während es immer noch verhindert, dass die Shell den größten Teil der Befehlszeile durcheinander bringt.