時々、zshの文字列または配列リテラルにパラメータ拡張フラグを適用したいと思うかもしれません。ユースケースの例として、$arglist
コンマで区切られたいくつかの文字列をコンマで除算し、前に何かを追加したいとします。次のようにできればいいでしょう。
${(s/,/)arg1,arg2,$restofarglist}
もちろん、この特定の問題を解決する別の方法があり、常にパラメータに最初に割り当ててからフラグを適用できることを知っています。しかし、問題は、ロゴをテキストに直接適用できるかどうかです。
答え1
私はあなたがパラメータ置換を探していると思います:-
。
$ restofarglist='abc,def'
$ echo ${(s/,/)${:-arg1,arg2,$restofarglist}}
arg1 arg2 abc def
man 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