Hallo,
hat irgendwer eine Idee, wie man in einem Skript unter Linux in einer Abfrage prüfen kann, ob Vormittag oder Nachmittag ist?
Ich bin für jeden Hinweis dankbar.
Gruß
Thomas
Hallo,
hat irgendwer eine Idee, wie man in einem Skript unter Linux in einer Abfrage prüfen kann, ob Vormittag oder Nachmittag ist?
Ich bin für jeden Hinweis dankbar.
Gruß
Thomas
Hallo,
hat irgendwer eine Idee, wie man in einem Skript unter Linux
in einer Abfrage prüfen kann, ob Vormittag oder Nachmittag
ist?Ich bin für jeden Hinweis dankbar.
Du überlegst Dir, welcher Zeitraum Vor- oder Nachmittag sein soll.
z.B. 9.00 - 12:30 …
Dann fragst Du einfach die aktuelle Zeit ab „date +%X“ und läßt überprüfen ob die aktuelle Zeit in solch einen Zeitraum fällt.
Grüße
K.
Hallo,
Du überlegst Dir, welcher Zeitraum Vor- oder Nachmittag sein
soll.
z.B. 9.00 - 12:30 …
ich habe es sogar noch einfacher…
bis 12:00 ist alles Vormittag und anschließend alles Nachmittag.
Dann fragst Du einfach die aktuelle Zeit ab „date +%X“ und
läßt überprüfen ob die aktuelle Zeit in solch einen Zeitraum
fällt.
wie prüfe ich dann am besten ab, ob die Uhrzeit vor oder nach 12:00 Uhr ist?
Gruß
Thomas
Hallo,
ich habe es sogar noch einfacher…
bis 12:00 ist alles Vormittag und anschließend alles
Nachmittag.
wie prüfe ich dann am besten ab, ob die Uhrzeit vor oder nach
12:00 Uhr ist?
TAGESZEIT=„vormittag“
["$(date +%H)" -ge „12“]&&TAGESZEIT=„nachmittag“
echo $TAGESZEIT
Grüße
K.
Hallo,
["$(date +%H)" -ge „12“]&&TAGESZEIT=„nachmittag“
sieht echt genial aus und funktioniert super! Kannst Du mir vielleicht in kurzen Worten beschreiben, was in dem Befehl bis einschließlich der beiden & gemacht wird?
Gruß
Thomas
Hallo,
["$(date +%H)" -ge „12“]&&TAGESZEIT=„nachmittag“
sieht echt genial aus und funktioniert super! Kannst Du mir
vielleicht in kurzen Worten beschreiben, was in dem Befehl bis
einschließlich der beiden & gemacht wird?
Abfrage und Variablenzuweisung.
http://bin-bash.de/scripts.php
http://de.wikibooks.org/wiki/Linux-Kompendium:_Shell…
http://ibiblio.org/pub/Linux/docs/HOWTO/Bash-Prog-In…
Grüße
K.
Ich bin für jeden Hinweis dankbar.
Hiho,
der Hinweis lautet in solchen Fällen man date. Dort findet sich dieser Hinweis:
%p locale’s equivalent of either AM or PM; blank if not known
und das erzeugt dann mit
date +%p die Ausgabe AM oder PM.
Gruß,
Stefan
date %p bei deutscher Lokalisation
Hallo Stefan,
%p locale’s equivalent of either AM or PM; blank if not known
und das erzeugt dann mit
date +%p die Ausgabe AM oder PM.
Der letzte Teil
blank if not known
ist da leider der Haken an der Sache. Bei den meisten deutschen Lokalisationen ist diese Variable eben nicht definiert, so daß man sowohl vormittags als auch nachmittags nichts als ein blank erhält
Theoretisch könnte man in der Datei /usr/share/i18n/locales/de_DE die Variable am_pm anpassen, z.B. so:
am\_pm "";""
statt des ursprünglich vorhandenen
am\_pm "";""
um dann mit locale-gen die Localization neu zu generieren.
Auf die Art erhält man mit meinem Beispiel bei
date +%p
jetzt die Ausgabe
nm
was n ach m ittag heissen soll
Könnte man noch wortreicher ausbauen, scheint mir aber zuviel Aufwand für so ein eher theoretisches Problem zu sein…
@Thomas
… oder steckt da mehr dahinter? Etwas, was man vielleicht mit einem (oder zwei?) cronjobs auch lösen könnte?
Viele Grüße
Marvin
Hallo,
Theoretisch könnte man in der Datei …
wobei am/pm auch nicht unbedingt identisch ist, mit dem was wir so als vormittag / nachmittag bezeichnen. Und morgen, mittag, abend, nacht, würden dann auch noch überflüssig.
Grüße
K.
Hallo Klaus,
Theoretisch könnte man in der Datei …
wobei am/pm auch nicht unbedingt identisch ist, mit dem was
wir so als vormittag / nachmittag bezeichnen.
Was noch dazu käme, ja. Aber zum Glück teilt Thomas ja seinen Tag konventionell um 12 Uhr
Aber das Ganze scheint mir auch eher so eine Fingerübung für die Shell zu sein. Deshalb auch meine Anfrage bei Thomas, ob da noch was anderes dahinter steckt.
Viele Grüße
Marvin
if(((timestamp()+(6*60*60))modulo(24*60*60))
Hallo Safrael,
if(((timestamp()+(6*60*60))modulo(24*60*60))
fängt die
Epoche nicht am 1.1.1970 00:00 Uhr UTC an?
Keine Ahnung, wo Du wohnst, aber in Deutschland kommt man
selbst mit der Sommerzeit nicht auf 18 Stunden Differenz.
Mist, hab die Zeitzone vergesssen. Meine Berechnung basiert auf der Zeitzone EST, das kann man aber leicht korrigieren indem man die Ziffer 6 durch die korrekte ersetzt.
http://www.unixtimestamp.com/index.php
Ich habe die Zeit einfach hier entnommen. Bei timestamp eine „1“ einsetzen und Du weist ab wann sie läuft.
Und bei genauerer Betrachtung fehlt auch noch Sommer/Winterzeit.
Meine Lösung wird also für eine praktische Anwendung zu kompliziert. Die anderen waren da besser.
ist da leider der Haken an der Sache. Bei den meisten
deutschen Lokalisationen ist diese Variable eben nicht
definiert, so daß man sowohl vormittags als auch nachmittags
nichts als ein blank erhält
Dann setzt man die LOCALE halt um mit
#!/bin/bash
export LC\_ALL=en\_US
date +%p
Gruß,
Stefan
HAllo Marvin,
@Thomas
… oder steckt da mehr dahinter? Etwas, was man vielleicht
mit einem (oder zwei?) cronjobs auch lösen könnte?
ich habe es momentan mit zwei separaten Cron-Jobs gelöst, möchte aber eigentlich alle diese Dinge wieder in einem Job vereinen, da ich dann bei Änderungen nicht immer bestimmte Befehlssequenzen aus einer Batchdatei herausnehmen muss und in die andere einbauen. Dann kann ich die nämlich innerhalb einer Datei besser „abfangen“.
Gruß
Thomas
Hallo Thomas,
danke für die Rückmeldung. Ja, wenn das so ist, dann hast Du mit dem Vorschlag von Klaus eine prima Lösung.
Viele Grüße
Marvin
Und bei genauerer Betrachtung fehlt auch noch
Sommer/Winterzeit.
Meine Lösung wird also für eine praktische Anwendung zu
kompliziert. Die anderen waren da besser.
Ich finde die Lösung sehr elegant, weil sie universeller und leichter zu erweitern ist als Lösungen, die mit Stunden und Minuten hantieren. Bei Addieren und Vergleichen von Zeitangaben macht man es sich fast immer einfacher, wenn man zunächst alles in Sekunden umwandelt und dann erst mit der Arithmetik beginnt. Die Anpassung an die lokale Zeit inkl. Sommerzeit erhält man dabei durch Addieren von date +%:::z
* 3600.
Im vorliegenden Anwendungsfall wäre es damit recht einfach, den Zeitraum für „Vormittag“ frei konfigurierbar zu machen. Natürlich geht das auch mit der Lösung von Klaus, aber wenn „Vormittag“ bedeutet „zwischen 07:30 und 12:00“, oder Nacht „zwischen 20:30 und 06:00“, dann wird damit die Abfrage schon etwas komplex.
Gruß
A.