我正在寻找制作 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
。