Я плутаюсь у ролі розбиття розбиття слова zsh. Я не піддавався цій концепції під час програмування на C, Python або MATLAB, і це викликало мій інтерес, чому розщеплення слів здається чимось специфічним для програмування оболонок.
Я раніше читав про розділення слів на цьому та інших сайтах, але не знайшов чіткого пояснення цієї концепції. У Вікіпедії є визначення розділення слів, але, схоже, немає посилань на те, як воно застосовується до оболонок Unix.
Ось приклад моєї плутанини в zsh:
У поширених питаннях про Z Shell я прочитав наступне:
3.1: Чому
$varтам, деvar="foo bar"не робити того, чого я очікую?У більшості похідних оболонки Борна багато змінні змінні, такі як
var="foo bar"розділяються на слова, коли передаються команді або використовуються вfor foo in $varциклі. За замовчуванням zsh не має такої поведінки: змінна залишається недоторканою. (Це не помилка! Дивіться нижче.)SH_WORD_SPLITІснує можливість забезпечити сумісність.
Однак у посібнику Z Shell я прочитав таке:
SH_WORD_SPLIT (-y) <K> <S>Причиняє розщеплення поля для розширень без котируваних параметрів. Зауважте, що ця опція не має нічого спільного з розділенням слів. (Див. Розширення параметрів.)
Чому йдеться про те, що неSH_WORD_SPLIT має нічого спільного з розділенням слів? Чи не розбиття слів саме для чого це?
"word1 word2 word3"в списки / масиви форми"word1" "word2" "word3"? Я також оновив ОП із конкретним джерелом плутанини в zsh.