
${..#..}
通常の文字列のように、配列の最初の文字列から特定の文字列までどのように削除できますか?${s#abc}
$ s=(e u i o foo a)
$ t=(${s[@]#*foo})
$ echo "${t[@]}"
e u i o a
予想の代わりに:
a
これらのニーズを正しく解決するには?
答え1
zsh
切り替えるオプションがある場合は、次のことができます。
s[(r)foo,-1]=()
r
どこにキャンセル下付き文字記号インデックスの代わりに値で配列メンバーを参照できます。ここでは、最初の値から最後の要素()までの()
要素の範囲に空のリストが割り当てられます。foo
-1