ubuntuusers.de

Cronjob - if-Bedingung in Shellskript wird nicht korrekt ausgewertet

Status: Gelöst | Ubuntu-Version: Kubuntu 12.04 (Precise Pangolin)
Antworten |

ConnyLingo

Anmeldungsdatum:
9. Oktober 2013

Beiträge: 2

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

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Hi Conny,

erstmal herzlich willkommen hier auf dem Forum !

Bei Deinem Skript hast Du ja gar keinen Shebang angegeben ... ist das Absicht, oder hast Du nur vergessen den mit hierher zu kopieren ?
Wenn der nämlich tatsächlich fehlt, ruft das Skript auch keinen Interpreter auf und wird folglich auch nicht ausgeführt.

(oder womöglich aus unerfindlichen Gründen doch, nur nicht mit der Bash-Shell, sondern der Bourne- sh-Shell, und die kennt kein (( .... )) )

LG,

track

ConnyLingo

(Themenstarter)

Anmeldungsdatum:
9. Oktober 2013

Beiträge: 2

Hi track,

danke für deine schnelle und hilfreiche Rückmeldung.

Dass die Shebang-Angabe sinnvoll ist, habe ich bei meinen Recherchen bis jetzt überlesen oder ignoriert. Ich hatte in meinem Skript keinen angegeben. Auf jeden Fall funktioniert es jetzt so, wie es soll. Danke nochmal!

LG, Conny

Antworten |