Forums Neueste Beiträge
 

Problem mit Expansion in Skript

21/02/2010 - 02:58 von Andreas Kohlbach | Report spam
Ich benötige eine zufàllige Anzahl Sekunden in einem bestimmten Bereich,
in der das Skript warten soll. Ich habe dazu

sleep $(expr $RANDOM \/ 100)

genommen. Auf dem Prompt der Bash "GNU bash, version 4.0.33(1)-release
(x86_64-pc-linux-gnu)" (Ubuntu Linux) funktioniert das auch.

Habe ich das aber in einer Datei, als erste Zeile auch "#!/bin/bash",
diese auch ausführbar gemacht, und rufe diese auf, bekomme ich

~$ sh /tmp/test.sh
expr: syntax error
sleep: missing operand

Nehme ich aber "sleep 200" funktioniert es.

Warum?

Gibt es eine bessere Methode, eine zufàllige Zahl zu bekommen?
Andreas
Linux: The choice of a GNU generation.
 

Lesen sie die antworten

#1 Helmut
21/02/2010 - 08:00 | Warnen spam
Hallo, Andreas,

Du meintest am 20.02.10:

Ich benötige eine zufàllige Anzahl Sekunden in einem bestimmten
Bereich, in der das Skript warten soll. Ich habe dazu

sleep $(expr $RANDOM \/ 100)

genommen. Auf dem Prompt der Bash "GNU bash, version
4.0.33(1)-release (x86_64-pc-linux-gnu)" (Ubuntu Linux) funktioniert
das auch.

Habe ich das aber in einer Datei, als erste Zeile auch "#!/bin/bash",
diese auch ausführbar gemacht, und rufe diese auf, bekomme ich

~$ sh /tmp/test.sh
expr: syntax error
sleep: missing operand

Nehme ich aber "sleep 200" funktioniert es.

Warum?



Wenn Du mit

echo $(expr $RANDOM \/ 100)

experimentierst und mal annimmst, dass "$RANDOM" nicht bereitgestellt
wird, dann wird

echo $(expr \/ 100)

abgearbeitet, und das ergibt die obige Fehlermeldung.

Ohne Ursachenforschung: funktioniert

sleep $(($RANDOM / 100))

stattdessen?




Viele Gruesse
Helmut

"Ubuntu" - an African word, meaning "Slackware is too hard for me".

Ähnliche fragen