用于 grep 字符串并将其放入数组的 Bash 脚本

用于 grep 字符串并将其放入数组的 Bash 脚本

我正在寻找制作 bash 脚本的方法,该脚本可以 grep 命令输出并将字符串放入数组中,并且能够从数组中随机选择 1 个字符串(例如每分钟)并将其放置为变量,随机选择的时间需要是可配置的。

Command output:
string
string2
string3

将所有这些字符串放入数组中,并随机选择其中一个并将其作为变量

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")'

每分钟伪随机选择其中一个元素:

while :
do
  element=$(( RANDOM % ${#outputs[@]} ))
  var=${outputs[$element]}
  sleep 60
done

请注意,bash 数组从索引零开始,$(( ))算术表示使用数组$RANDOM中元素数量的模值outputs

相关内容