除非你使用的是旧版本的bash
,但绝对没有理由诉诸seq
产生你的那个序列。
此外,像echo $(echo something)
这样的东西是完全不需要。
更改脚本这两个顾虑:
for c in {1..10} ; do
echo "random value #$c:$RANDOM"
done
给你的东西产生正确的数据:
random value #1:3394
random value #2:6099
random value #3:21492
random value #4:17973
random value #5:22698
random value #6:15844
random value #7:28506
random value #8:1960
random value #9:23593
random value #10:17412
而且,事实上,你原脚本还作品(至少在bash 4.3.46
),所以我猜你可能已经无意中塞满了RANDOM
变量这里。您应该意识到,未设置该“变量”可能会导致稍后使用它的问题,并将其设置为特定值会生成该生成器。
因此,我会在您的bash
每个shell启动脚本中寻找一些可能将RANDOM
设置为特定值的内容。由于$(echo $RANDOM)
这个事情会执行该脚本,如果您直接回显该值,可能会被修复)。
,肯定会引起你的问题,按照下面的演示:
for c in {1..5} ; do
RANDOM=7
echo "random value #$c:$RANDOM"
done
这给:
random value #1:19345
random value #2:19345
random value #3:19345
random value #4:19345
random value #5:19345
请看看[编辑的帮助(HTTP://计算器。 COM /编辑 - 帮助)。 – Cyrus
你究竟是怎么调用脚本的?换句话说,您用来运行脚本的命令行是什么? – John1024
我可以用bash 4.3.8来重现这一点,只有这样:'for $ in $(seq 1 10);' do echo“random value#$ c:$(RANDOM = 42; echo”$ RANDOM“)”;完成' – Cyrus