Linux 在bash脚本中运行random命令

Linux 在bash脚本中运行random命令,linux,bash,random,Linux,Bash,Random,我想在bash脚本中随机选择一个随机命令 我试过这样的命令 echo$($RANDOM%12)) 但是它们可以在UNIX命令行中工作,但不能在我的bash脚本中工作 有人能解决我的问题吗?创建shell脚本test.sh chmod +x test.sh test.sh的内容 #!/bin/bash echo $(( $RANDOM % 12 )) 通过 bash test.sh 或 --根据评论中的讨论更新答案-- 对于Bash用户: 给出的代码可以正常工作。只是别忘了将权限设置为+x(

我想在bash脚本中随机选择一个随机命令

我试过这样的命令

echo$($RANDOM%12))

但是它们可以在UNIX命令行中工作,但不能在我的bash脚本中工作


有人能解决我的问题吗?

创建shell脚本test.sh

chmod +x test.sh
test.sh的内容

#!/bin/bash
echo $(( $RANDOM % 12 ))
通过

bash test.sh

--根据评论中的讨论更新答案--

对于Bash用户:

给出的代码可以正常工作。只是别忘了将权限设置为+x(将可执行权限授予所有人)。例如:
chmod+xmyscript.sh

注意:不要将RANDOM设置为值。它失去了它的特殊性质

Bash手册页-

RANDOM每次引用此参数时,都是一个随机整数 在0和32767之间生成。随机数的序列可以是 可以通过将值赋给RANDOM来初始化。如果未设置RANDOM,则它 丢失其特殊属性,即使它被依次重置

对于dash用户:

ubuntu中的sh是dash的符号链接。 dash不支持随机变量,它只是另一个变量

如果绑定使用sh,则可以使用date函数生成 仅当脚本不依赖于时间时才进行伪随机。(如果你的 脚本以严格的时间间隔运行,它可能会生成相同的值)

一般来说:

如果您想生成真正的随机数,请使用-

dd if=/dev/urandom count=1 2> /dev/null | cksum | cut -f1 -d" "

来源:

您是否使用
sh
来执行脚本而不是
bash
?是的。这是我在运行脚本算术表达式时得到的错误代码:应为primary:“%12”使用
bash
使用脚本执行,而不是使用
sh
。chmod+x到您的脚本运行正常谢谢!!我认为否决票是因为他的问题不是如何生成一个真正的随机数,然而好的信息我不知道
random=a的效果;echo$RANDOM
so+1(顺便说一句,我没有投你反对票)我不认为你需要任何种子才能使用
$RANDOM
。好奇……在MacOSX10.9.3小牛上使用
bash
我可以使用
bash-c'echo$RANDOM'
sh-c'echo$RANDOM'
,并且不费吹灰之力就能得到一个随机数。这是基于3.2.51的苹果版本。这应该等同于您的命令。(事实上:
sh-c'echo$($RANDOM%12))
工作得很好。)我不知道区别是什么,但我从未遇到过需要种子的支持RANDOM的shell……但是我没有遇到过
dash
!在Ubuntu14.04上,带有
/bin/sh
破折号的符号链接,然后我就遇到麻烦了。还有一个理由不太喜欢
dash
。实际上,
dash
不支持
$RANDOM
作为特殊变量;你可以像任何其他变量一样设置它,并随时回显它,每次都可以得到相同的值-不同于
bash
ksh
中的
$RANDOM
。对于真正的RANDOM,
/dev/uradom
很酷,但你不需要
dd
+
cksum
+
cut
od
就足够了,例如。,
od-An-tu-N2/dev/uradom
。(
-N2
选项告诉您要读取多少字节,此处为2字节–您可以替换为
1
3
4
,无需进一步调整)。
RANDOM=`date '+%s'`
echo $(( $RANDOM % 12 )) # To generate random numbers less than 12
dd if=/dev/urandom count=1 2> /dev/null | cksum | cut -f1 -d" "