2016-09-25 4 views
0

Ich versuche, mit zufälligem Ausgang auf jede Schleife Iteration zu erhalten:Kein zufälliger Ausgang mit Schleife

#!/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. 

Aber was ich bekommen ist:

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

Was mache ich falsch?

Antwort

2

Sie möchten eine neue Zufallszahl generieren und sie in jeder Iteration Ihrer Schleife rnd zuweisen. In Ihrem Code ordnen Sie es einmal vor der Schleife zu, daher ändert es sich nicht und Sie erhalten jedes Mal die gleiche Ausgabe.

Versuchen Sie, die Zuweisung in die Schleife zu verschieben. Etwas wie:

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

Funktioniert wunderbar, danke. – stumped

+0

Kein Problem. Fühlen Sie sich frei, meine Antwort als richtig zu wählen :) – dave

Verwandte Themen