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 readarray
la 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 10
producir 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 $RANDOM
módulo del número de elementos en la outputs
matriz.