Ich habe mein Problem hier schon ausführlich dargestellt und auch schon fast gelöst, aber ich habe eine grundsätzliche Frage an euch Scriptexperten.
Mit
erhalte ich die Zeit in Sekunden bis zum nächsten Timer. Diese 'Zahl' ist negativ, falls ein Timer gerade aktiv ist. Dummerweise ist die Ausgabe von svdrpsend.pl aber ein String und somit ist '$secs' auch ein String und nicht vom Typ Integer. Jeglicher Versuch mit
evaluieren entweder in beiden Fällen ('-gt' und '-lt' bzw. '<' und '>') zu '0' (!) oder zu einer Fehlermeldung (bin nicht zu Hause und kann sie daher nicht genau wiedergeben).
Fein. Wenn ich '$secs' an ein Perl Script übergebe, dann kann ich dort alle möglichen Rechenoperationen ausführen.
/usr/local/bin/test.pl (bitte nicht hauen falls die Syntax nicht ok ist. Ich habe eigentlich Null Ahnung von Perl):
$zahl = ARGV[0]
chomp $zahl;
@a=$zahl # nicht über die Zuwesiung wundern. Ich habe das an einen Beispielcode angepasst
print eval(a[0] * -1,"\n");
Dieses Perl Script kann ich natürlich wunderbar von der bash aus aufrufen, aber warum funktioniert das in der bash selbst nicht (das Rechnen meine ich. Ich weiss, dass ich einige Dinge dort anders schreiben müsste)?
Ich würde mir jetzt so helfen, daß ich die if-Abfragen in dem Perl Script ausführe und dann einen Wert an die bash zurückgebe, den ich dort auswerten kann
ergebnis="$(/usr/bin/perl /usr/local/bin/test.pl $secs)";
if [ "$ergebnis" == "Dies"); then tue_dies
else
if [ "$ergebnis" == "Jenes"); then tue_jenes
fi
fi
Auch ein
hat nichts an dem Verhalten in der bash geändert.
Vielleicht mache ich mich mit der Frage ja komplett lächerlich, aber bevor ich mit meinem VDR angefangen habe (Datum steht in der Signatur) hatte ich Null Ahnung von Linux. Ich würde mich über eine Erklärung freuen.
Gruß,
Marcus