コマンド出力の配列があります。
array=(saf sri trip tata strokes)
これで、ユーザー入力に基づいてアイテムをフィルタリングしたいと思います。ユーザーはワイルドカードを使用することもできるので、ユーザーが を入力すると、*tr*
出力は次のようになります。
trip strokes
ベストアンサー1
以下を使用する方が簡単ですzsh
。
$ array=(saf sri trip tata strokes)
$ pattern='*tr*'
$ printf '%s\n' ${(M)array:#$~pattern}
trip
strokes
${array:#pattern}
:配列の要素に展開されます。いいえパターンを一致させます。(M)
:#
(一致の場合):一致する要素で拡張された演算子の意味を復元します。$~pattern
、結果のコンテンツは$pattern
パターンとして扱われます。