如何在命令行中获得随机性?

Pan*_*dya 13 command-line

如何在指定的命令列表中随机执行一个命令?有助于随机选择启动声音、壁纸或执行命令。

一般来说,如果我有如下执行命令,那么我如何获得随机性:?

#!/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)


Pan*_*dya 8

根据@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)