除非你使用的是舊版本的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