Isso deve realizar o que você está procurando.
COMMANDS=("command1" "command2" "command3")
$(shuf -n1 -e "${COMMANDS[@]}")
Recebe a matriz e usa shuf
para gerar um comando aleatório.
UPDATE: comando shuf alterado por @steeldriver
Eu quero meu script bash para executar o comando aleatório dado abaixo. Por exemplo
[mysterious command] ("command1", "command2", "command3")
Coloque seus comandos em uma matriz.
cmds=( "cmd1" "cmd2" "cmd3" )
$RANDOM
é um número aleatório e ${#cmds[@]}
avalia o tamanho de sua matriz (3 neste exemplo). $(( RANDOM % ${#cmds[@]} ))
será um número aleatório entre 0 e um menor que o comprimento da matriz cmds
, ou seja, 0, 1 ou 2.
i=$(( RANDOM % ${#cmds[@]} ))
Fazer o seguinte selecionaria a sequência de $cmds
correspondente ao índice $i
e a executaria como um comando.
${cmds[i]}
ou tudo de uma só vez (o que parece um pouco horrível):
${cmds[RANDOM % ${#cmds[@]}]}