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

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

コマンドの出力を 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 から始まることに注目して、演算では配列内の要素数を法とした$(( ))値を使用するように指示されます。$RANDOMoutputs

関連情報