Я ищу способ создать bash-скрипт, который будет выполнять grep-анализ вывода команды и помещать строки в массив, а также иметь возможность случайным образом выбирать одну строку из массива, например, каждую минуту, и помещать ее как переменную. Время случайного выбора должно быть настраиваемым.
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
подстановку команд with для захвата выводимых данных, разделенных символами новой строки, в массив; например:
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
массиве.