コマンドの出力を grep して文字列を配列に配置し、たとえば 1 分ごとに配列から 1 つの文字列をランダムに選択して変数として配置できる bash スクリプトを作成する方法を探しています。ランダムに選択する時間は構成可能である必要があります。
Command output:
string
string2
string3
これらの文字列をすべて配列に配置し、そのうちの1つをランダムに選択して変数として配置します。
desired result:
strings -> array <- randomly selecting from array every 1 minute and placing string selected as variable for further use
答え1
bash では、readarray
コマンド置換を使用して、改行で区切られた出力を配列にキャプチャできます。例:
readarray -t outputs < <(seq 10)
seq 10
ここで、出力を生成するために使用しました。結果は次のようになります。
$ declare -p outputs
declare -a outputs='([0]="1" [1]="2" [2]="3" [3]="4" [4]="5" [5]="6" [6]="7" [7]="8" [8]="9" [9]="10")'
1 分ごとにこれらの要素の 1 つを疑似ランダムに選択するには、次のようにします。
while :
do
element=$(( RANDOM % ${#outputs[@]} ))
var=${outputs[$element]}
sleep 60
done
bash 配列はインデックス 0 から始まることに注目して、演算では配列内の要素数を法とした$(( ))
値を使用するように指示されます。$RANDOM
outputs