printf '%s, ' `seq 1 10 | shuf`
for
ループも必要ありません。
出力
7, 3, 4, 10, 2, 9, 1, 8, 5, 6,
それらをシェル配列で取得するには、次のようにします。
( set -- $(seq 1 10 | shuf) ; printf '%s, ' "$@" )
出力
5, 9, 7, 2, 4, 3, 6, 1, 10, 8,
そして、それらはあなたのシェル配列にあります。
それらをシェル配列で取得する場合、必要はありませんprintf
:
( set -- $(seq 1 10 | shuf); IFS=, ; echo "$*" )
出力
9,4,10,3,1,2,7,5,6,8
ちなみに、seq
そしてprintf
ちょっとお互いのために作られています。たとえば、文字列を1000回繰り返したい場合はどうでしょうか。
printf 'a string\n%.0b' `seq 1 1000`
出力
a string
... 999 a string
行後...
a string
または...
printf 'a string,%.0b' `seq 1 10`
出力
a string,a string,a string,a string,a string,a string,a string,a string,a string,a string,
コマンドを39回実行したいのですが?
printf 'echo "run %d"\n' `seq 1 39` | . /dev/stdin
出力
run 1
... 38 run
行後...
run 39
echo $(seq 10 | shuf)
近づいてきますが、コンマは行いません。