Ausgabe einer Persönlichen Begrüßung nach Uhrzeit ( Guten Morgen, Guten Tag, Guten Abend)

awellmann

awellmann

Neues Mitglied
Thread Starter
Dabei seit
07.09.2016
Beiträge
6
Reaktionspunkte
0
Hallo zusammen,

ich möchte gerne mit der Shell eine Ausgabe erzeugen, die mir eine tageszeitliche Begrüßung ausgibt. Dies soll später mit Hilfe von GeekTool auf dem Desktop sichtbar oder mit say hörbar gemacht werden.

Mein Ansatz war:
Variable Date

Date=`date +%H:%M`;

echo $Date
liefert mir dann z.b. 15:00 zurück - soweit so gut....

Nun möchte ich so vorgehen, dass ich $date vergleiche. Also wenn Uhrzeit kleiner 12:00 Uhr dann Ausgabe "Guten Morgen".
Wenn Uhrzeit größer 12 Uhr und kleiner 16 Uhr dann "Guten Tag" andernfalls "Guten Abend".
Na ja - so ungefähr - Ihr wisst sicher wie ich das meine..

Wie müßte ich das umsetzen ?

Danke für Eure Hilfe
 
Man-Page zu date lesen ... Man kann die Ausgabe auch formatieren, zB um nur die Stunde zu erhalten. Die kann man dann auch schön mit den normalen Funktionen vergleichen.
Die :Minuten brauchst doch dafür gar nicht.
 
Danke - Ja, das ist soweit schon klar. Die Frage ist im Grunde, wie eine if / then / else o. ä. Kombination im Script aussehen müßte, damit es so funktioniert wie ich es brauche.
Habe da schon ein wenig experimentiert, bekomme es aber nicht hin...
 
Soweit bin ich nun schonmal gekommen - getestet und funktioniert soweit:
Time=`date +%H`

echo $Time;
(gibt mir den Wert zur Kontrolle zurück)

if [ $Time '<' 12 ]; then
say Guten Morgen
fi

if [ $Time '>' 16 ]; then
say Guten Abend

fi

Nun müsste ich im Grunde noch die Zeit zwischen 12 und 16 Uhr abfangen.
Wie würde die Syntax aussehen, wenn ich die Abfrage so formulieren wollte:
Wenn $Time größer als 12 und kleiner als 16 dann say Guten Tag ???
if [ $Time '>' 12 && '<' 16]; then
say Guten Tag
fi

funktioniert hier nicht
 
Die Variable $Time muss nochmals angegeben werden:
$Time '>' 12 && $Time '<' 16
 
Müsste dann ja komplett so aussehen:
Time=`date +%H`

echo $Time;

if [ $Time '<' 12 ]; then
say Guten Morgen
fi

if [ $Time '>' 12 && $Time '<' 16 ]; then
say Guten Tag
fi

if [ $Time '>' 16 ]; then
say Guten Abend

fi

Funktioniert aber leider nicht ....
Da er jetzt garnix mehr sagt, stimmt wohl irgendwie die Syntax im mittleren Teil nicht ganz...
 
#!/bin/sh
Time=`date +%H`

echo $Time;

if [ $Time '<' 12 ]; then
say Guten Morgen

elif [ $Time '<' 16 ]; then
say Guten Tag

else
say Guten Abend
fi


...oder bei deinem Beispiel war die Schreibweise falsch (ja, ich habe es ja selbst falsch vorgeschlagen, sorry)

richtig ist

if [ $Time '>' 12 ] && [ $Time '<' 16 ]; then
 
Supi- Funktioniert. - Mein fertiges Script für GeekTool sieht nun so aus:

afplay ~/Documents/Geektool/willkommen/MacStartUp.mp3

Time=`date +%H:%M`
User=`whoami`

if [ $Time '<' 12 ]; then
say Guten Morgen $User
fi

if [ $Time '>' 12 ] && [ $Time '<' 16 ]; then
say Guten Tag $User
fi

if [ $Time '>' 16 ]; then
say Guten Abend $User
fi

say System gestartet. Es ist jetzt $Time


Die Zeitabfrage habe ich nun doch so zusammengesetzt, da es a) so auch funktioniert und b) ich die Variable auch gleich für die Sprachausgabe nutzen kann.
Vielen vielen Dank !!
 
Hallo,

voll in AppleScript…

Viele Grüße

Code:
--

set aTime to time of (current date)

--

set aText to ""

--

if (aTime > (16 * 60 * 60)) then
	
	--
	
	set aText to "Guten Abend"
	
	--
	
else if (aTime > (12 * 60 * 60)) then
	
	--
	
	set aText to "Guten Tag"
	
	--
	
else
	
	--
	
	set aText to "Guten Morgen"
	
	--
	
end if

--

if (length of aText < 1) then
	
	return 0
	
end if

--

say aText

--

return 1

--
 
zu #9
Nein, es wird nicht immer funktionieren .... zwischen 12:00 bis 12:59 und 16:00 bis 16:59 sagt das Script nämlich keine Begrüßung!
Also statt > bitte >= verwenden ... oder mit dem von mir vorgeschlagenen elif arbeiten.
 
Zuletzt bearbeitet:
thanx ! ;-)
 
Zurück
Oben Unten