Linux 在bash脚本中运行random命令
我想在bash脚本中随机选择一个随机命令 我试过这样的命令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(
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" "