Hallo Community,
ich als Linux-Neuling, der sich mit Shell-Skripten und Programmierung beschäftigt, habe ein Verständnisproblem bei der Auswertung einer if-Bedingung in einem Shellskript, welches in einem Cronjob ausgeführt wird.
Folgende Situation: Es existiert eine test.sh, in der folgender Code steht:
$testvar; testvar=1; if (($testvar>0)); then echo $testvar, also groesser 0; else echo $testvar, also kleiner gleich 0; fi;
Wenn ich dieses Skript manuell ausführe, dann bekomme ich die von mir erwartete logische Ausgabe (then-Zweig):
1, also groesser 0
Konfus ist für mich Folgendes: Ich habe einen Cronjob angelegt, der das Skript automatisch jede Minute ausführen soll:
* * * * * /home/connylingo/test.sh >> /home/connylingo/test.log
Wenn ich mir das test.log anschaue, dann steht dort jedoch die Auswertung des else-Zweiges drin, obwohl die Variable laut Ausgabe den korrekten Wert hat, der ihr bei der Initialisierung zugewiesen wird:
1, also kleiner gleich 0
Fragen: 1) Wieso wird bei der automatischen Ausführung des Skriptes über den Cronjob die if-Bedingung falsch ausgewertet, also der Task in den falschen Zweig geleitet wird? 2) Was kann ich zur Korrektur dagegen tun? Mein Ziel ist es, dass dieses Skript automatisch ausgeführt wird.
Vielen Dank im Voraus für eure Hilfe!
LG, Conny