bash forループで生成された文字列から最後のコンマを削除します。

bash forループで生成された文字列から最後のコンマを削除します。

配列から区切り文字でカンマ区切りリストを作成し、最後のカンマを削除する必要がある状況で作業しています。私はbashforパイピングを使用してsedすべてのカンマを削除しますが、最後のカンマは削除しません。単純化された例は次のとおりです。

x=$(for i in a b c; do echo "${i}",; done| sed 's/,$//')
echo $x
a b c

希望の出力:

a, b, c

どんな提案にも感謝します。

ベストアンサー1

一つの選択肢は持続することですbash

arr=(a b c)
x=$(IFS=,;printf  "%s" "${arr[*]}")
echo "$x"
a,b,c

交互に

arr=(a b c)
printf -v x "%s," "${arr[@]}"
x=${x%,}
echo "$x"
a,b,c

2番目のオプションでは、区切り文字を個別に設定する,のではなく(カンマの後にスペースが続く)ように設定できます。,

printf -v x "%s, " "${arr[@]}"
x=${x%, }
echo "$x"
a, b, c

おすすめ記事