Bash soll bei Durchführung eines Scriptes mitzählen...

Wuschl

Vice Admiral Special
Mitglied seit
11.11.2001
Beiträge
963
Renomée
1
Standort
Himberg/Wien
Hallo!

Mein Server (Xubuntu 8.04) soll, per cron gesteuert, mitzählen wie oft er ein und dasselbe Script bereits ausgeführt hat. Es geht um automatisches Herunterfahren des Servers und Diagnose mittels Ping. Ping deshalb weil ich unter Windows Samba nutze und unter Linux Nfs...

Zum Script:
Code:
Ping xx.yy.zz && exit => funktioniert

let VARIABLE=VARIABLE+1 && export VARIABLE=> da pfeift mir die Bash etwas weil sie der Meinung ist das "let" als Kommando nicht gefunden wird, als einzelner Befehl funktioniert das mit den Rechnen aber wunderbar :o

if [VARIABLE = "6"]; then
    init 0
fi

Das Script soll also einige male durchlaufen um sicherzustellen, das der Server nicht genau dann automatisch herunterfährt wenn der Client gerade dabei ist, ein anderes Betriebssystem zu booten. Syntaxfehler interliegen der GPL, ich wollte nur die logische Funktionsweise des Scripts aufzeigen ;).
Fällt jemand eine einfachere Lösung der Aufgabe ein, bzw. warum findet die Bash den Befehl "let" nicht, sobald er in einem Script eingabaut ist?
 
Ein "which let" zeigt bei mir, dass es das nicht als Kommando gibt (ein alias ist es auch nicht, weiss grade selber nicht was es dann wohl ist). Daher wohl die Meldung.

Die Alternative ist dann mit "expr" zu arbeiten. Falls sich expr etwas ziert hilft es, die Variable mit "typeset -i" zu definieren.

edit: Falls ich das gerade richtig entdeckt habe, ist "let" eine bash-Funktion. Damit das geht musst du auch sicherstellen, dass das Skript mit der bash aufgerufen wird.
Und auch dann darf die bash nicht über einen Link augerufen werden. Wird die bash z.B. als über /bin/sh aufgerufen, werden diverse Funktionen abgeschalten, um standardkonform zu sein (was die bash dann trotzdem nicht ganz exakt ist).
Also löst du das Problem evtl. auch, sobald du als Shebang-Zeile "!#/bin/bash" einträgst oder in deinem cron "/bin/bash <Skript>" einträgst.
 
Zuletzt bearbeitet:
Ein "which let" zeigt bei mir, dass es das nicht als Kommando gibt (ein alias ist es auch nicht, weiss grade selber nicht was es dann wohl ist). Daher wohl die Meldung.

Die Alternative ist dann mit "expr" zu arbeiten. Falls sich expr etwas ziert hilft es, die Variable mit "typeset -i" zu definieren.

Danke erstmal "let" ist eines der builtin commands der Bash. Vermutlich kommt daher (Deine) Fehlermeldung :)

Ich habe das Problem derweil mit "sleep" gelöst, das sollte auch funktionieren.

LG Wuschl
 
Zurück
Oben Unten