feh
é um visualizador de imagens, apenas ignore essa parte ... você quer apenas a segunda parte.
Basicamente, para acessar um elemento de matriz aleatório, você deseja algo como ${arr[${ri}]}
, em que ri
é $(( $RANDOM % ${#arr[@]} + 1))
, ou seja, ri
é um índice aleatório da matriz arr
Agora, $RANDOM % N
resolve um número aleatório de 0
a N-1
. Nesse caso, N
é o comprimento da matriz ${#arr[@]}
(número de elementos), mas como a indexação da matriz começa em 1
em zsh
, é necessário adicionar uma ( + 1
) para que $(( $RANDOM % ${#arr[@]} + 1 ))
retorne um valor de 1
to N
.
Então, por exemplo para imprimir um elemento aleatório da matriz:
print -r -- ${arr[$(( $RANDOM % ${#arr[@]} + 1 ))]}
Ou simplesmente, como índices de array são analisados como expressões aritméticas:
print -r -- $arr[RANDOM % $#arr + 1]