1. ホーム
  2. arrays

シェルで配列からランダムに項目を選択する方法

2023-10-01 16:46:09

質問

シェルスクリプトでボットを作っています。

# Array with expressions
expressions=("Ploink Poink" "I Need Oil" "Some Bytes are Missing!" "Poink Poink" "Piiiip Beeeep!!" "Hello" "Whoops! I'm out of memmory!")

# Seed random generator
RANDOM=$$$(date +%s)

# Loop loop loop loop loop loop ...
while [ 1 ]
do
    # Get random expression...
    selectedexpression=${expressions[$RANDOM % ${#RANDOM[*]}]}

    # Write to Shell
    echo $selectedexpression


    # Wait an half hour
    sleep 1 # It's one second for debugging, dear SOers
done

の中からランダムな項目を表示させたい。 expressions からランダムな項目を表示させたい。試してみましたが、うまくいきません。毎回、最初のもの(Ploink Poink)しか印刷されません。どなたか助けていただけませんか? ありがとうございます。

どのように解決するのですか?

を定義している行を変更します。 selectedexpression

selectedexpression=${expressions[ $RANDOM % ${#expressions[@]} ]}

インデックスを expression の長さまでの乱数を指定します。 expression の配列の長さまでとする。 これはそれを実行します。