代わりにIFS=",";echo {1..5}
出力するにはどうすればよいですか? bash echo {1..5}を作成してコンマで値を出力するにはどうすればよいですか?1,2,3,4,5
1 2 3 4 5
答え1
Bashの組み込み機能を使用してください。
5
末尾のコンマを避けるために区切る必要があるため、これは少し見苦しくなります。
$ printf '%s,' {1..4}; echo 5
1,2,3,4,5
その後、printf
変数に直接出力できますが、パラメータ拡張を使用してこの問題を解決し、最後のコンマを削除できます。
$ printf -v tmpvar "%s," {1..5}; echo "${tmpvar%,}"
1,2,3,4,5
または、"$*"
最初の文字を使用して接続する with ですIFS
。これはグローバル状態を破壊しますが、サブシェルまたは関数で実行すると簡単に回避できますlocal IFS
。
$ IFS=,; set -- {1..5}; echo "$*";
1,2,3,4,5
制限が変数にある場合、最も簡単な方法はループを使用して手動で実行することです。中括弧拡張範囲では、変数をエンドポイントとして使用できないためです。繰り返しますが、上限は特別なケースです。
a=1; b=5
for (( i=a ; i<b ; i++ )); do
printf "$i,";
done;
printf "$b\n"
答え2
以下を試してください。
seq --separator="," 1 5
答え3
数値中括弧拡張を使用しているため、発生する唯一のスペースは数値間のスペースであるため、結果を後処理できます。
output=$(echo {1..5} | tr ' ' ',')
または
output=$(echo {1..5} | sed 's/ /,/g')
答え4
スペースとコンマを許可する場合は、次のようにしてください。
$ echo {1..5},
1, 2, 3, 4, 5,