PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [bash] read -t funktioniert als cron-job nicht



Fedi
26-05-2009, 18:15
Hallo,

ich habe ein Skript, welches ich vorzugsweise per cron starte. Allerdings muss ich es manchmal auch auf der Konsole bzw. per ssh starten und dann möchte ich eine Benutzereingabe auslesen um einen bestimmten Teil zu überspringen.

Starte ich das Skript manuell funktioniert es - auch wenn ich keine Eingabe mache (wie im Fall von cron).
Per Cron-Job tut sich dann aber nichts mehr.



echo "Frage? (Sie haben 30Sekunden Zeit): (j/n) "
read -t 30 antwort -n 1
if [ "$antwort" = n -o "$antwort" = N ]
then
echo "gut"
else
echo "auch gut"
fi



Hat jemand einen Tipp?

Danke
CU
Fedi

jan61
26-05-2009, 19:28
Moin,

ich denke mal, das liegt daran, dass ein cron-Job eben kein STDOUT/STDIN hat (er hat es schon, aber das landet eben nicht auf einem Terminal) und das deshalb read fehlschlägt.

Eine Möglichkeit ist, innerhalb des Scripts abzuprüfen, ob es ein Controlling TTY gibt:

if test ! "`/usr/bin/tty`" = "not a tty"; then
read -p "Frage? (Sie haben 30 Sekunden Zeit): (j/n) " -t 30 -n 1 antwort
fi


Jan