[Frage] Shell Script auf der FB7390

quaximator

Neuer User
Mitglied seit
3 Jan 2015
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
Ich habe einen Script geschrieben, bei dem man seine Daten via console, also telnet eingibt. Unter anderem wird ein Tag definiert, an dem sich der Script beenden soll und die Box rebooten soll. Alle definierten Daten werden in Dateien gespeichert. In einem Fall eines Stromausfalls werden die Daten wieder eingelesen und bis zum eingegebenen Tag verarbeitet. Jetzt mein Problem: wenn der Stromausfall über diesen Tag hinausgeht, dann startet die Box den script trotzdem und läuft, bis wieder dieser Tag ist. Ich gebe den Namen des Wochentages an und lasse diesen im Moment in einer while schleife solange vergleichen, bis dieser Tag ist mit date +"%A"
Kann mir jemand helfen? Wie kriege ich das hin, das der Script dann sagt "stop, es ist nicht der richtige Tag zum Beenden" und beendet die Verarbeitung? Wäre für eine Antwort sehr dankbar!
 
Moin

Meinst du jetzt die Prüfung auf den Tag?
Code:
echo $(date +%a) | grep -c 'Sun' && echo Go || echo NoGo                                                                                                   
0
NoGo

echo $(date +%a) | grep -c 'Tue' && echo Go || echo NoGo                                                                                                   
1
Go

While Schleifen können auch eine Bedingung erhalten die in der While Schleife dann erst gesetzt/erfüllt wird.

Code:
i=1; while [ $i -eq 1 ]; do echo $(date +%a) | grep -c 'Tue' && i=0; echo Go || echo NoGo;done
 
Zuletzt bearbeitet:
Nein, so ähnlich wie du den Code hier geschrieben hast ist mein script im Moment aufgebaut. Ich meine, wie man zb. das richtige Datum auf den letzten Tag, der eingegeben worden ist, ausrechnen kann. Auch wenn dieser im nächsten Monat bzw Jahr liegt. Der Tag wird nur namentlich benannt und nicht mit Datum selbst. Vielen Dank schonmal für die Antwort.
 
Zuletzt bearbeitet:
Sowas in dieser Art?!?
Code:
root@eumex:/var/mod/root# x=1; while [ "Sunday" != "$(date +%A -D %s -d $(( $(date +%s) + $(( $x * 86400)) )))" ]
; do x=$(( $x +1)); done ;  date  -D %s -d $(( $(date  +%s) + $(( $x * 86400)) ))
Sun Mar  8 20:34:38 CET 2015
root@eumex:/var/mod/root# x=1; while [ "Monday" != "$(date +%A -D %s -d $(( $(date +%s) + $(( $x * 86400)) )))" ]
; do x=$(( $x +1)); done ;  date  -D %s -d $(( $(date  +%s) + $(( $x * 86400)) ))
Mon Mar  9 20:34:59 CET 2015
root@eumex:/var/mod/root#

EDIT
Mal zusammengefasst:

Code:
nextday(){
x=1
while [ $x -lt 9 -a "$1" != "$(date +%A -D %s -d $(( $(date +%s) + $(( $x * 86400)) )))" ]; do 
x=$(( $x +1))
done
[ $x -lt 9 ] && date  -D %s -d $(( $(date  +%s) + $(( $x * 86400)) )) || echo falscher Tag
}

Kurzer Test:
Code:
root@eumex:/var/mod/root# 
root@eumex:/var/mod/root# nextday Wednesday
Wed Mar  4 21:09:48 CET 2015
root@eumex:/var/mod/root# nextday Thursday
Thu Mar  5 21:10:00 CET 2015
root@eumex:/var/mod/root# nextday Friday
Fri Mar  6 21:10:06 CET 2015
root@eumex:/var/mod/root# nextday Saturday
Sat Mar  7 21:10:15 CET 2015
root@eumex:/var/mod/root# nextday Sunday
Sun Mar  8 21:10:21 CET 2015
root@eumex:/var/mod/root# nextday Monday
Mon Mar  9 21:10:28 CET 2015
root@eumex:/var/mod/root# nextday Tuesday
Tue Mar 10 21:10:36 CET 2015
root@eumex:/var/mod/root# nextday gibbetnich
falscher Tag
root@eumex:/var/mod/root# 
root@eumex:/var/mod/root# nextday
falscher Tag
root@eumex:/var/mod/root#
 
Zuletzt bearbeitet:
Genau das meine ich! Vielen vielen dank!!!
 

Statistik des Forums

Themen
246,161
Beiträge
2,247,152
Mitglieder
373,687
Neuestes Mitglied
iTimo
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.