小编lqu*_*lqu的帖子

shell $ RANDOM种子在管道中没有兑现

这是一个我无法解释的奇怪行为.我想使用shell生成可预测的随机数序列.我使用带有种子的$ RANDOM.这是一个测试程序.

RANDOM=15
echo $RANDOM
Run Code Online (Sandbox Code Playgroud)

每次运行时都会给出相同的数字,这样可以正常工作.但是如果我在这个程序中添加一个管道,它每次都会给出不同的结果.尝试以下简化程序.

RANDOM=15
echo $RANDOM | cat
Run Code Online (Sandbox Code Playgroud)

我找到了2个问题的修复程序(使其可预测),但仍无法解释原因.

修复1

RANDOM=15
x=$RANDOM
echo $x | cat
Run Code Online (Sandbox Code Playgroud)

修复2

(RANDOM=15
echo $RANDOM) | cat
Run Code Online (Sandbox Code Playgroud)

我试过Linux和Mac.行为是一致的.有人可以解释一下吗?

random bash shell pipe seed

4
推荐指数
1
解决办法
197
查看次数

标签 统计

bash ×1

pipe ×1

random ×1

seed ×1

shell ×1