steckl: Shell Skript IF-Abfrage mit mehreren Konditionen

Beitrag lesen

Hi,

Funzt aber nicht richtig.

Das ist keine gute Fehlerbeschreibung ...

if [ "$CHECKHOUR" -le "8" -o "$CHECKHOUR" -ge "16" -a "$CHECKDAY" -ge "1" -o "$CHECKDAY" -le "5" ]; then

... aber hier liegt wohl der Fehler.

Ich weiß nicht genau in welcher Reihenfolge die Operatoren abgearbeitet werden, aber ich vermute mal nicht in der, die du dir wünscht.

In den Sprachen wo ich es weiß wird AND vor OR abgearbeitet.
Das heißt deine Bedingung würde so aussehen: (Pseudocode)

(HOUR <= 8) OR ( (HOUR >= 16) AND (DAY >= 1) ) OR (DAY <= 5)

Wie man in Bash-Scripts die Reihenfolge der Operatoren Festlegt weiß ich nicht. Hab es mit runden und eckigen Klammern versucht, hat aber nicht funktioniert.
(Vielleicht weiß das ja jemand hier im Forum)

Außerdem hast du einen logischen Fehler drin:
(DAY >= 1)  OR (DAY <= 5)
ist immer wahr.

Aber in deinem Fall reicht eh eine Verknüpfungsart:
(HOUR >= 8) AND (HOUR <= 16) AND (DAY >=1) AND (DAY <= 5)

Das ist Wahr wenn HOUR von 8 bis 16 geht und DAY von 1 bis 5.
Also wenn ich mich nicht täusche Montag bis Freitag von 8 Uhr bis 16:59 Uhr.

mfG,
steckl