Execute o comando aleatório

4

Eu quero meu script bash para executar o comando aleatório dado abaixo. Por exemplo

[mysterious command] ("command1", "command2", "command3")
    
por k073l 04.08.2016 / 17:27

2 respostas

4

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

    
por 04.08.2016 / 17:36
12

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[@]}]}
    
por 04.08.2016 / 17:37

Tags