Ich bin verwirrt über die Rolle, die die Wortspaltung spielt zsh
. Ich war bei der Programmierung in C, Python oder MATLAB nicht mit diesem Konzept vertraut, und dies hat mein Interesse geweckt, warum die Wortteilung etwas Besonderes für die Shell-Programmierung zu sein scheint.
Ich habe auf dieser und anderen Websites bereits von Worttrennung gelesen, aber keine klare Erklärung für das Konzept gefunden. Wikipedia hat eine Definition der Wortteilung, aber es scheint keine Hinweise darauf zu geben, wie sie auf Unix-Shells angewendet wird.
Hier ist ein Beispiel für meine Verwirrung in zsh
:
In den Z Shell FAQ habe ich Folgendes gelesen:
3.1: Warum macht
$var
wovar="foo bar"
nicht was ich erwarte?In den meisten Bourne-Shell-Derivaten werden Variablen mit mehreren Wörtern, z. B.
var="foo bar"
in Wörter aufgeteilt, wenn sie an einen Befehl übergeben oder in einerfor foo in $var
Schleife verwendet werden. Standardmäßig weist zsh dieses Verhalten nicht auf: Die Variable bleibt intakt. (Dies ist kein Fehler! Siehe unten.) Die Option istSH_WORD_SPLIT
vorhanden, um Kompatibilität bereitzustellen.
Im Z-Shell-Handbuch habe ich jedoch Folgendes gelesen:
SH_WORD_SPLIT (-y) <K> <S>
Bewirkt, dass die Feldaufteilung bei nicht zitierten Parametererweiterungen durchgeführt wird. Beachten Sie, dass diese Option nichts mit der Wortteilung zu tun hat . (Siehe Parametererweiterung.)
Warum heißt es, dass SH_WORD_SPLIT
das nichts mit Wortspaltung zu tun hat ? Spaltet sich nicht genau das, worum es geht?
"word1 word2 word3"
in Listen / Arrays des Formulars umwandelt"word1" "word2" "word3"
? Ich habe auch das OP mit einer bestimmten Quelle der Verwirrung in zsh aktualisiert.