В Zsh, если я бегу:расширение параметра Zsh на выходе флага Команда S не работает
a=$(echo "foo, bar")
echo ${a[(ws:, :)1]}
я foo
, как можно было бы ожидать (w
вызывает индекс для обозначения слов s:, :
делает ,
быть разделитель слов).
Однако, если я пытаюсь совместить эти:
echo ${$(echo "foo, bar")[(ws:, :)1]}
я foo,
. По какой-то причине флаг w
работает правильно, но флаг s:, :
полностью игнорируется.
Что я здесь делаю неправильно?
Дополнительная информация: Это просто проблема с $() внутри $ {}. Если я вложу $ {} внутри $ {}, такой проблемы нет.
$ zsh --version
zsh 5.2 (x86_64-unknown-linux-gnu)
'$ {==' только отключает опцию sh_word_split для расширения. По сути, это только утверждение дефолта и вряд ли будет иметь большой эффект. – okapi
Можете ли вы объяснить немного больше, что вы подразумеваете под «разделение поля» и «операция индексации», и почему ваше решение работает? Кажется, что цитирование «$ (echo» и «)» просто даст синтаксическую ошибку. – Radvendii
Может быть, вы используете более старую версию Zsh? Вы можете оставить внутренние кавычки или заменить их одиночными кавычками. См. [Этот снимок экрана] (https://postimg.org/image/47xhi0zwz/). – user1934428