Я плутаюсь у ролі розбиття розбиття слова 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.