2016-09-25 38 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