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

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

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

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

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

 $ 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