Estou procurando uma maneira de criar um script bash que greps a saída do comando e colocar strings no array e ser capaz de selecionar aleatoriamente 1 string do array, por exemplo, a cada minuto e colocá-lo como variável, o tempo para seleção aleatória precisa ser configurável.
Command output:
string
string2
string3
Coloque todas essas strings em um array e selecione aleatoriamente uma delas e coloque-a como variável
desired result:
strings -> array <- randomly selecting from array every 1 minute and placing string selected as variable for further use
Responder1
No bash, você pode usar readarray
with substituição de comando para capturar saídas separadas por nova linha em uma matriz; por exemplo:
readarray -t outputs < <(seq 10)
Onde eu costumava seq 10
produzir alguma saída. Isto resulta em:
$ 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")'
Para selecionar pseudoaleatoriamente um desses elementos a cada minuto:
while :
do
element=$(( RANDOM % ${#outputs[@]} ))
var=${outputs[$element]}
sleep 60
done
Observando que os arrays bash começam no índice zero, a $(( ))
aritmética diz para usar o valor do $RANDOM
módulo o número de elementos no outputs
array.