shufの出力を繰り返す方法は?

shufの出力を繰り返す方法は?

bashでこれを行うと、gshuf -e $(seq 1 10)1から10までの数字がランダムな順序で印刷されます。

しかし、これを行うと:

a=$(shuf -e $(seq 1 10))
for i in "${a[@]}"
do
    echo $i
    echo "next"
done

10個の数字をすべて印刷してから、「next」を印刷します。

shuf(またはos xのgshuf)出力を繰り返すには?変数がa文字列のように分割できます。ところでこれはちょっと混乱しているようです。 shuf出力を配列にする方法は?

ベストアンサー1

スカラー割り当てを使用しています。配列を使用するか

a=( $(shuf -e $(seq 1 10)) )
for i in "${a[@]}"
do
    echo $i
    echo "next"
done

または、シェルにスカラーを分割させるようにしてください。

a=$(shuf -e $(seq 1 10))
for i in ${a}
do
    echo $i
    echo "next"
done

おすすめ記事