Script Bash para agrupar cadenas y colocarlas en una matriz

Script Bash para agrupar cadenas y colocarlas en una matriz

Estoy buscando una manera de crear un script bash que registre la salida del comando y coloque cadenas en una matriz y pueda seleccionar aleatoriamente 1 cadena de la matriz, por ejemplo, cada minuto y colocarla como variable, el tiempo para la selección aleatoria debe ser configurable.

Command output:
string
string2
string3

Coloque todas estas cadenas en una matriz y seleccione aleatoriamente una de ellas y colóquela como variable

desired result:
strings -> array <- randomly selecting from array every 1 minute and placing string selected as variable for further use 

Respuesta1

En bash, puede utilizar readarrayla sustitución de comandos para capturar salidas separadas por nueva línea en una matriz; por ejemplo:

readarray -t outputs < <(seq 10)

Donde solía seq 10producir algunos resultados. Esto resulta en:

$ 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 seleccionar pseudoaleatoriamente uno de esos elementos cada minuto:

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

Teniendo en cuenta que las matrices bash comienzan en el índice cero, la $(( ))aritmética dice que se use el valor del $RANDOMmódulo del número de elementos en la outputsmatriz.

información relacionada