2013-07-12 64 views
1

隨機打印不同的輸出:隨機命令奇怪的行爲

[[email protected] /root]# echo $RANDOM 
7207 
[[email protected] /root]# echo $RANDOM 
8761 
[[email protected] /root]# echo $RANDOM 
29922 

隨機打印輸出結果相同:

[[email protected] /root]# value=`echo $RANDOM` 
[[email protected] /root]# echo $value 
5286 
[[email protected] /root]# value=`echo $RANDOM` 
[[email protected] /root]# echo $value 
5286 
[[email protected] /root]# value=`echo $RANDOM` 
[[email protected] /root]# echo $value 
5286 

我不能讓這種奇怪的行爲。任何人都可以幫我解決它嗎?

+0

簡單的辦法就是'值= $ RANDOM',但這並不能回答爲什麼'$(回聲$ RANDOM)'打印在每次調用同樣的事情(memoizing?)。 – tjameson

+3

我無法重現該問題。你能再次檢查你的變量嗎? – Antarus

+2

我可以在zsh中重現它,但不能在bash中重現。相關:http://lists.gnu.org/archive/html/bug-bash/2005-01/msg00239.html。也許zsh沒有得到備忘錄?測試用例:'echo $(echo $ RANDOM)'。似乎種子沒有在亞殼中得到再生。 – tjameson

回答

1

爲什麼你看到它是因爲每次echo $RANDOM運行的原因,這是一個新的「外殼」運行,因此它具有相同的初始種子值。嘗試echo $RANDOM; echo $RANDOM,你會看到不同的數字。 順便說一句,我沒有看到在bash的行爲,但我看到它在ZSH。