如何在指定的命令列表中随机执行一个命令?有助于随机选择启动声音、壁纸或执行命令。
一般来说,如果我有如下执行命令,那么我如何获得随机性:?
#!/bin/bash
<command_1>
<command_2>
<command_3>
.
.
.
<command_n>
Run Code Online (Sandbox Code Playgroud)
然后我想在脚本运行时只从上述可能性中随机执行一个命令!
怎么做?
tho*_*ter 22
该变量$RANDOM(实际上是一个 bash 函数)返回一个从 0 到 32767(含)的随机数。
您通常希望通过将其除以某个数字并取其余数来限制其范围,例如。
# output a random number 0 to 3
echo $((RANDOM % 4))
Run Code Online (Sandbox Code Playgroud)
在这个简单的例子中,对于任何不能被等分为 32768 的除数(例如,任何不是 2 的幂的任何除数)都会有轻微的偏差,但在你的情况下,我认为你不会感到困扰由于轻微的偏见。
要选择一个随机文件,您可以将文件命名为:
file0.jpg
file1.jpg
file2.jpg
file3.jpg
Run Code Online (Sandbox Code Playgroud)
然后你可以随机选择一个
# output a random file from file0.jpg to file3.jpg
echo "file$((RANDOM % 4)).jpg"
Run Code Online (Sandbox Code Playgroud)
根据@neon_overload 答案(使用RANDOM),
我可以RANDOM按如下方式放入示例脚本(对于 4 个命令):
#!/bin/bash
random_selection=$((RANDOM % 4))
case $random_selection in
0)
<command_1>
;;
1)
<command_2>
;;
2)
<command_3>
;;
3)
<command_4>
;;
esac
Run Code Online (Sandbox Code Playgroud)