Anzeige:
Ergebnis 1 bis 11 von 11

Thema: Wie "Ruhezeiten" in Shell-Script auswerten (Zeitspanne)

  1. #1
    Registrierter Benutzer
    Registriert seit
    Jun 2006
    Beiträge
    84

    Question Wie "Ruhezeiten" in Shell-Script auswerten (Zeitspanne)

    Hallo,
    ich setze im Shell-Script "Ruhezeiten", z.B.
    Ruhe_Start="22:30"
    Ruhe_Ende=" 5:45"

    Jetzt soll in einer Abfrage (if ...) überprüft werden, ob die aktuelle Zeit ('date +%H:%M') innerhalb oder ausserhalb dieser Zeitspanne ist.
    Wie kann ich das umsetzen?
    Gibt es da "Erfahrungen", Ideen?

    Ansatz mit: Stunde x 60 + Minute (22 * 60 +30), kann das funktionieren? Wegen dem Tagesübergang 00:00 ...
    Geändert von linux-try (14.10.22 um 15:23 Uhr)
    Viele Grüße,
    Martin

  2. #2
    Fieses Frettchen Avatar von DrunkenFreak
    Registriert seit
    Dec 2003
    Beiträge
    3.315
    Mach doch einfach zwei Abfragen:

    Code:
    if [ $TIME -gt 22:30 -a $TIME -lt 00:00 ]
    then
    do_nothing
    elif [ $TIME -lt 5:45 -a $TIME -gt 00:00 ]
    then
    do_nothing
    else
    do_someting

  3. #3
    Registrierter Benutzer
    Registriert seit
    Jun 2006
    Beiträge
    84
    Zitat Zitat von DrunkenFreak Beitrag anzeigen
    Mach doch einfach zwei Abfragen:

    Code:
    if [ $TIME -gt 22:30 -a $TIME -lt 00:00 ]
    then
    do_nothing
    elif [ $TIME -lt 5:45 -a $TIME -gt 00:00 ]
    then
    do_nothing
    else
    do_someting
    Danke für deinen Ansatz, aber ... ;-)

    - Der -gt oder -lt Vergleich versteht doch keine Uhrzeiten ("23:45"), doch nur Intergerzahlen (oder?)

    - und die "UND"-Verknüpfung jeweils zu: "-a ...-lt 00:00" und "-a ... -gt 00:00"; $TIME ist doch immer größer 0 (buw. 00:00; oder missverstehe ich es?)
    Viele Grüße,
    Martin

  4. #4
    Fieses Frettchen Avatar von DrunkenFreak
    Registriert seit
    Dec 2003
    Beiträge
    3.315
    Natürlich funktioniert das nicht mit Uhrzeiten. Das musst du dir selbst zusammen friemeln.

  5. #5
    Registrierter Benutzer Avatar von ThorstenHirsch
    Registriert seit
    Nov 2002
    Beiträge
    6.558
    Also das Integer-Problem bekommst Du mit String-Manipulation der Bash gelöst, z.B.:
    Code:
    ➜  ~ TIME=20:33
    ➜  ~ echo ${TIME//:}
    2033
    Wenn die Ruhezeit immer vor 00:00 Uhr beginnt, kannst Du nach oben hin abfragen: ${TIME//:} -gt ${BEGIN//:}. Mit Ruhezeiten, die nach 00:00 Uhr beginnen, wär's noch ein IF/ELSE mehr. Und das Ende der Ruhezeit sollte immer nach 00:00 Uhr liegen, also: ${TIME//:} -lt ${END//:}.
    ¡Nuestro amigo... el Computador!

  6. #6
    Registrierter Benutzer
    Registriert seit
    Jun 2006
    Beiträge
    84
    OK,
    ich sehe, um eine allgemein gültige "Version" incl. beliebiger Start- und Endzeiten inc. Tagesübergang zu Scripten, bedarf es einiger "Logic".
    hab einiges Probiert, aber so einfach die Aufgabenstellung ist, scheint komplizierter als gedacht.
    Und umgesetzt hat die anscheinend auch noch keiner in einem Script :-(

    > "Natürlich funktioniert das (22:30) nicht mit Uhrzeiten"
    Dachte ich mir auch, nur weil DrunkenFreak das ja in seinem "Script" geschrieben hat ...
    Und auch das ".. -a $TIME -lt 00:00" ; die aktuelle Uhrzeit (bzw. dessen numerischer Wert ohne die ":") kann ja nie kleiner 0 sein.
    Viele Grüße,
    Martin

  7. #7
    Codefuzzy Avatar von Efraim
    Registriert seit
    Jun 2010
    Beiträge
    445
    Zitat Zitat von linux-try Beitrag anzeigen
    > "Natürlich funktioniert das (22:30) nicht mit Uhrzeiten"
    Dachte ich mir auch, nur weil DrunkenFreak das ja in seinem "Script" geschrieben hat ...
    Und auch das ".. -a $TIME -lt 00:00" ; die aktuelle Uhrzeit (bzw. dessen numerischer Wert ohne die ":") kann ja nie kleiner 0 sein.
    Für solche Probleme gibt es die Unix-Time.
    https://de.wikipedia.org/wiki/Unixzeit

  8. #8
    Registrierter Benutzer
    Registriert seit
    Jun 2006
    Beiträge
    84
    Zitat Zitat von Efraim Beitrag anzeigen
    Für solche Probleme gibt es die Unix-Time.
    https://de.wikipedia.org/wiki/Unixzeit
    Kenn ich auch,
    aber ob sich damit das Ausgangsproblem einfacher lösen läßt ... Den Tagesübergang bei z.B. der Endzeit muss ja auch berücksichtigt werden ...
    Viele Grüße,
    Martin

  9. #9
    Codefuzzy Avatar von Efraim
    Registriert seit
    Jun 2010
    Beiträge
    445
    Wenn die Endzeit kleiner als die Anfangszeit ist, wird ein Tag zur Endzeit hinzu gerechnet, wo ist das Problem?
    Kann man alles mit date berechnen, auch Unixzeiten.

  10. #10
    Registrierter Benutzer
    Registriert seit
    Apr 2009
    Ort
    Erde
    Beiträge
    2.819
    Oder man nimmt einfach Textvergleiche dafür; warum ein Tages wechsel da relevant sein soll, verstehe ich gerade nicht - http://tpcg.io/_0F49YD
    Code:
    #!/bin/bash
    i=0
    start="15:00"
    end="17:00"
    while [ $i -lt 10 ]; do
       i=$((i+1))
       time=$(date +%H:%M)
       if [[ "$time" > "$start" ]] && [[ "$time" < "$end" ]]; then
          echo "${time} is within ${start}-${end}"
       else
          echo "${time} isn't within ${start}-${end}"
       fi
       sleep 1
    done
    echo "bye"
    Gruß nopes
    (,,,)---(^.^)---(,,,) /var/log/messages | grep cat

  11. #11
    Codefuzzy Avatar von Efraim
    Registriert seit
    Jun 2010
    Beiträge
    445
    Zitat Zitat von nopes Beitrag anzeigen
    warum ein Tages wechsel da relevant sein soll, verstehe ich gerade nicht
    Jupp. Um das zu verstehen, solltest Du in Deinem Code mal start- und enduhrzeit vertauschen.

Ähnliche Themen

  1. shell script "einbinden"
    Von khatarnak im Forum System installieren und konfigurieren
    Antworten: 2
    Letzter Beitrag: 06.03.09, 12:18
  2. shell script "IF ftp file exist then..."
    Von CheGuevara im Forum Linux Allgemein
    Antworten: 4
    Letzter Beitrag: 11.06.06, 21:39
  3. Shell Script "Leere Datei"
    Von dE_MaStEr im Forum Linux Allgemein
    Antworten: 4
    Letzter Beitrag: 20.05.05, 12:43
  4. Wie mache ich ein "Autostart"-Prog/Script/Shell
    Von BORNtobNAMELESS im Forum Anwendungen Allgemein, Software
    Antworten: 6
    Letzter Beitrag: 09.02.05, 16:15
  5. Netzwerk "Script" oder "programm" zum umschalten von IP
    Von darkkiller0 im Forum Linux als Server
    Antworten: 2
    Letzter Beitrag: 07.03.04, 20:06

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •