Script Bash para grep string e colocá-los em array

Script Bash para grep string e colocá-los em array

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 readarraywith 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 10produzir 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 $RANDOMmódulo o número de elementos no outputsarray.

informação relacionada