bash script wird nur als cronjob nicht richtig ausgeführt

lordg2009

Lt. Commander
Registriert
Apr. 2009
Beiträge
1.543
Hi,

es geht um ein bash script, welches unter debian problemlos seine Arbeit tut. Möchte ich es allerdings als cronjob ausführen, dann funktioniert es nicht. Ich habe (Dank eines Tips aus dem Forum) die Fehlerausgabe in eine Datei umleiten lassen und bekomme nun eine riesige Menge an Fehlern.

Die Fehler betreffen nur den test nach dem Schema

Code:
if [ "${VAR1}" == "${VAR2}" ]
then
    blabla
fi

Die Fehlermeldung lautet jedes Mal:

Code:
/usr/local/sbin/maclogger.sh: 134: [: 16: unexpected operator

Natürlich auch für viele andere Zeilen. Ein Vergleich von Zahlen liefert keine Probleme, nur wenn ein == dasteht.

Woran kann das liegen?
Was mich verwirt ist, es hat auf debian 6 funktioniert und macht als cronjob erst seit dem wechsel auf debian 7 Probleme. Außerdem ist es sehr verwirrend für mich, dass das Script manuell ausgeführt klappt, nicht jedoch als cronjob.

Über eine Lösung wäre ich echt richtig dankbar.
 
Welche shell nutzt der cronjob? bash, dash, oder was ganz anderes?

Was ist der Inhalt der beiden verglichenen Variablen?
 
Oh nee,

Bei sowas könnte ich jedes mal auf die Tastatur kotzen.

Wozu definiert man so eine beschissene shebang-Zeile, wenn cron dann trotzdem entscheidet, es würde lieber die sh nehmen. Hab jetzt ein /bin/bash noch mal vor das script gesetzt, jetzt macht er, wie er soll.

Danke euch und sry, für diesen dummen Fehler
 
lordg2009 schrieb:
Wozu definiert man so eine beschissene shebang-Zeile, wenn cron dann trotzdem entscheidet, es würde lieber die sh nehmen.

Mit dem lustigen #!/bin/bash sollte es eigentlich keine Probleme geben. Sicher das du das shebang korrekt angegeben hast? Also in Zeile Eins und ohne Leerzeichen?
 
Fehler behoben mit:
Code:
    if [ "${VAR1}" == "${VAR2}" ];
    then
     blabla
    fi
Deshalb schreibe ich Skripte immer in sh, nicht in bash :evillol:
 
OK, nehme alles zurück. Dies war das einzige meiner Skripte, bei dem ich das ! Zeichen im shebang verloren habe.

Also alles meine Schuld, sorry Linux.
 
Och. komm. Jammere nicht rum ;) aus Fehlern lernt man. Ich denke mal du wirst es nie wieder vergessen :)
 
Zurück
Oben