文字列をgrepして配列に入れるBashスクリプト

文字列をgrepして配列に入れるBashスクリプト

コマンド出力を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

関連情報