ワイルドカードを使用してitem = {one、two、third}を拡張する

ワイルドカードを使用してitem = {one、two、third}を拡張する

中かっこ拡張を使用すると、リストがbash表示されます。

echo item={one,two,three}
item=one item=two item=three

ワイルドカードと一致するファイル/フォルダが含まれているディレクトリにあると仮定すると、そのファイル/フォルダと一致する拡張を実行する方法はありますか?

ls
blue  green  red

echo item=*      # Obviously not
item=*

echo item={*}    # Maybe? ...but no
item={*}

私の場合は、次に拡張したいと思います。item=blue item=green item=red

私が得た最高は次のコードでした。

items=()
for dirent in *; do items+=("item=$dirent"); done
echo "${items[@]}"

item=blue item=green item=red

ベストアンサー1

次のように、現在のディレクトリのファイルを配列に保存できます。

items=(*)

その後、パラメータ拡張を使用してプレフィックスを追加できます。

printf "%s\n" "${items[@]/#/item=}"

これを使用して配列を更新できます。

items=("${items[@]/#/item=}")

おすすめ記事