我希望我的 bash 脚本执行下面给出的随机命令。例如
[mysterious command] ("command1", "command2", "command3")
答案1
将您的命令放入数组中。
cmds=( "cmd1" "cmd2" "cmd3" )
$RANDOM
是一个随机数,${#cmds[@]}
计算结果为数组的长度(本例中为 3)。 $(( RANDOM % ${#cmds[@]} ))
将是一个介于 0 和比数组长度小 1 之间的随机数cmds
,即 0、1 或 2。
i=$(( RANDOM % ${#cmds[@]} ))
执行以下操作将从$cmds
对应于索引的字符串中挑选出来$i
并将其作为命令执行。
${cmds[i]}
或者一次性完成(看起来有点可怕):
${cmds[RANDOM % ${#cmds[@]}]}
答案2
这应该可以实现您正在寻找的内容。
COMMANDS=("command1" "command2" "command3")
$(shuf -n1 -e "${COMMANDS[@]}")
获取数组并用于shuf
生成随机命令。
更新:根据@steeldriver更改了shuf命令