Bash 随机命令奇怪的行为

Bash 随机命令奇怪的行为,bash,shell,random,Bash,Shell,Random,随机打印不同的输出: [root@manage /root]# echo $RANDOM 7207 [root@manage /root]# echo $RANDOM 8761 [root@manage /root]# echo $RANDOM 29922 随机打印相同的输出: [root@manage /root]# value=`echo $RANDOM` [root@manage /root]# echo $value 5286 [root@manage /root]# value=`

随机打印不同的输出:

[root@manage /root]# echo $RANDOM
7207
[root@manage /root]# echo $RANDOM
8761
[root@manage /root]# echo $RANDOM
29922
随机打印相同的输出:

[root@manage /root]# value=`echo $RANDOM`
[root@manage /root]# echo $value 
5286
[root@manage /root]# value=`echo $RANDOM`
[root@manage /root]# echo $value
5286
[root@manage /root]# value=`echo $RANDOM`
[root@manage /root]# echo $value
5286

我不能接受这种奇怪的行为。有人能帮我解决这个问题吗?

您之所以看到它,是因为每次运行
echo$RANDOM
时,它都在一个新的“shell”上运行,因此它具有相同的起始种子值。尝试
echo$RANDOM;echo$RANDOM
,您将看到不同的数字。
顺便说一句,我在BASH中没有看到这种行为,但我在ZSH中看到了

之所以看到它,是因为每次运行
echo$RANDOM
时,它都在一个新的“shell”上运行,因此它具有相同的起始种子值。尝试
echo$RANDOM;echo$RANDOM
,您将看到不同的数字。
顺便说一句,我在BASH中没有看到这种行为,但我在ZSH中看到了

简单的解决方案是
value=$RANDOM
,但这并不能回答为什么
$(echo$RANDOM)
在每次调用时打印相同的内容(记忆?),我无法重现这个问题。你能再次检查你的变量吗?我可以在zsh中复制它,但不能在bash中复制。相关:。也许zsh没有收到备忘录?测试用例:
echo$(echo$随机)
。种子似乎没有在子shell中重新生成。@user95711您使用的是哪个shell
echo$SHELL
GNU bash,版本1.14.7(1)简单的解决方案是
value=$RANDOM
,但这并不能回答为什么
$(echo$RANDOM)
在每次调用时都打印相同的内容(记忆?)。我无法重现这个问题。你能再次检查你的变量吗?我可以在zsh中复制它,但不能在bash中复制。相关:。也许zsh没有收到备忘录?测试用例:
echo$(echo$随机)
。种子似乎没有在子shell中重新生成。@user95711您使用的是哪个shell<代码>echo$SHELLGNU bash,版本1.14.7(1)