Применяйте флаги расширения параметров к литералу строки или массива в zsh

Иногда я хотел бы применить флаги расширения параметров к литералу строки или массива в zsh. В качестве примера используйте пример, скажем, что я хочу разбить запятую строку $arglist на запятую, но добавьте что-то в начало. Было бы неплохо иметь возможность сделать это:

 ${(s/,/)arg1,arg2,$restofarglist} 

Конечно, есть другие способы решить эту проблему, и я знаю, что я всегда могу назначить параметр сначала, а затем применить флаги. Но возникает вопрос: могу ли я применить флаги непосредственно к буквальному?

One Solution collect form web for “Применяйте флаги расширения параметров к литералу строки или массива в zsh”

Я думаю, что вы ищете :- замену параметров:

 $ restofarglist='abc,def' $ echo ${(s/,/)${:-arg1,arg2,$restofarglist}} arg1 arg2 abc def 

От человека zsh:

 ${name:-word} If name is set, or in the second form is non-null, then substitute its value; otherwise substitute word. In the second form name may be omitted, in which case word is always substituted. 

На самом деле вы можете сделать этот пример немного короче:

 $ echo ${${:-arg1,arg2,$restofarglist}//,/ } arg1 arg2 abc def 
  • zsh находится в / usr / bin, но также в / bin, в чем разница?
  • Как просмотреть текущие настройки для всех параметров?
  • Обработать функцию `zsh` с использованием, которая распознает только команды
  • Есть ли postexec / predisplay hook для ZSH?
  • Как я могу использовать bindkey для запуска скрипта?
  • Почему оператор if if интерпретирует логическое обратное
  • zsh: Как проверить, включена ли опция
  • zsh: проблемы с переименованием файлов с zmv
  • Об относительных достоинствах `` $ @ "` и `" $ @ "`
  • Когда необходимо включить `emulate -LR zsh` в функцию, вызванную zsh-виджетами?
  • Как сделать короткие строки sh
  • Linux и Unix - лучшая ОС в мире.