bash脚本:
for c in $( seq 1 10)
do
echo "random value #$c:$(echo "$RANDOM")"
done
输出:
random value #1:20892 random value #2:20892 random value #3:20892 random value #4:20892 random value #5:20892 random value #6:20892 random value #7:20892 random value #8:20892 random value #9:20892 random value #10:20892
答案 0 :(得分:0)
除非您使用的是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