コマンド出力をgrepし、文字列を配列に入れ、配列から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
。