配列の各メンバーの前に追加して追加する方法は?

配列の各メンバーの前に追加して追加する方法は?

配列があります。

CATEGORIES=(one two three four)

パラメーター拡張を使用して、各配列メンバーの前に以下を追加できます。

echo ${CATEGORIES[@]/#/foo }

同じ方法で各配列メンバーに追加できます。

echo ${CATEGORIES[@]/%/ bar}

どのように両方を持つことができますか?次のいずれも機能しません。

echo ${CATEGORIES[@]/(.*)/foo \1 bar}
echo ${CATEGORIES[@]/(.*)/foo $1 bar}
echo ${CATEGORIES[@]/(.*)/foo ${BASH_REMATCH[1]} bar}

ベストアンサー1

最終目標に応じて、以下を使用できますprintf

$ a=(1 2 3)
$ printf "foo %s bar\n" "${a[@]}"
foo 1 bar
foo 2 bar
foo 3 bar

printf書式文字列はすべての引数が使用されるまで再利用されるため、文字列セットにいくつかの書式を適用する簡単な方法が提供されます。

おすすめ記事