2016-09-25 42 views
0

我試圖讓每循環迭代隨機輸出:沒有帶環隨機輸出

#!/bin/bash 
random() { 
     shuf -i 0-9 -r -n 1 
} 

rnd=$(random) 

until [ $rnd -ge "5" ] 
do 
     sleep 1 
     echo $rnd 
done 
# I need these functions, so can't do it any simpler. 

但我得到的是:

./test.sh 
2 
2 
2 
2 
2 
2 
^C 

我在做什麼錯?

回答

2

您希望生成一個新的隨機數,並在循環的每次迭代中將其分配給rnd。在你的代碼中,你在循環之前分配一次,因此它不會改變,每次你都會得到相同的輸出。

嘗試將任務移到循環中。像這樣:

rnd=0 
until [ $rnd -ge "5" ] 
do 
    rnd=$(random) 
    sleep 1 
    echo $rnd 
done 
+0

工程很漂亮,謝謝。 – stumped

+0

沒問題。隨意選擇我的答案是正確的:) – dave