Mylę się co do roli, jaką odgrywa podział słów zsh
. Nie byłem narażony na tę koncepcję podczas programowania w C, Python lub MATLAB, co spowodowało moje zainteresowanie tym, dlaczego dzielenie słów wydaje się być czymś specyficznym dla programowania powłoki.
Czytałem wcześniej o dzieleniu słów na tej i innych stronach, ale nie znalazłem jasnego wyjaśnienia tego pojęcia. Wikipedia ma definicję podziału słów, ale wydaje się, że nie ma odniesień do tego, jak ma ona zastosowanie do powłok uniksowych.
Oto przykład mojego zamieszania w zsh
:
W FAQ Z Shell przeczytałem:
3.1: Dlaczego
$var
gdzievar="foo bar"
nie robić to, co się spodziewać?W większości pochodnych powłoki Bourne'a zmienne o wielu słowach, takie jak
var="foo bar"
dzielone na słowa po przekazaniu do polecenia lub wfor foo in $var
pętli. Domyślnie zsh nie ma takiego zachowania: zmienna pozostaje nienaruszona. (To nie jest błąd! Zobacz poniżej.)SH_WORD_SPLIT
Istnieje opcja zapewniająca zgodność.
Jednak w podręczniku Z Shell przeczytałem:
SH_WORD_SPLIT (-y) <K> <S>
Powoduje, że podział na pola jest wykonywany dla niecytowanych rozszerzeń parametrów. Pamiętaj, że ta opcja nie ma nic wspólnego z dzieleniem słów. (Zobacz Rozszerzanie parametrów.)
Dlaczego mówi, że nieSH_WORD_SPLIT
ma to nic wspólnego z dzieleniem słów? Czy słowo nie dzieli dokładnie tego, o co w tym wszystkim chodzi?
"word1 word2 word3"
w listy / tablice formularza"word1" "word2" "word3"
? Zaktualizowałem również OP o konkretne źródło zamieszania w Zsh.