lqu*_*lqu 4 random bash shell pipe seed
这是一个我无法解释的奇怪行为.我想使用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.行为是一致的.有人可以解释一下吗?