ein dickes Brett vorm Kopf

L

lazybaer

Aktives Mitglied
Thread Starter
Dabei seit
08.02.2006
Beiträge
172
Reaktionspunkte
3
Tag allerseits

Kann mir jemand sagen, warum das nachstehende if-Statement nicht läuft, obwohl wir März haben?

#!/bin/sh

mo=`date +%b`

if [ $mo = "Mär" ]; then echo vorhanden; fi

Jeder Hinweis ist willkommen. Danke zum voraus.

Lazy
 
Hi,

ist das Datum in Englisch?
 
Der Vergleichsoperator ist == und nicht =
 
funktioniert auch mit == nicht ...
 
Hi,

das mag in C bzw. C++ so sein, aber nicht in der Shell.

EDIT: Was gibt denn date +%b auf der Konsole aus?
 
Eingabe von date im terminal ergibt: Mo 21 Mär 2011 12:37:04 CET
 
Hm stimmt - == und = ist egal
allerdings läuft das script bei mir
 
Zuletzt bearbeitet:
Hi,

probier mal if [ $mo = "Mar" ], also ohne Umlaut.
 
date +%b im Terminal ergibt Mär
 
Hi,

habe ich schon zur Kenntnis genommen, probiers dennoch mal, oder lass das Datum von deinem Skript anzeigen.
 
auch ohne Umlaut kein Ergebnis

spielt das Encoding eine Rolle?
 
Hi,

das kann schon sein. Welches Datum wird angezeigt, wenn du es über das Skript ausgeben lässt?
 
echo `date` ergibt Mo 21 Mär 2011 13:15:30 CET
 
Das Ding ist gelöst. War wieder mal ein falsches Encoding. Danke für die Hilfestellung.
Lazy
 
Hiho,

Nur mal als allgemeine HIlfestellung bei solchen Scripting-Problemen:

Wenn ihr als Shebang (das ist die erste Zeile im Script die mit #! anfängt) anstatt "#!/bin/sh" einfach "#!/bin/sh -x" benutzt, dann seht ihr genau was wo wie ausgeführt wird. Damit kann man vielen Kleinigkeiten schnell auf den Grund gehen. Wenn das Script dann läuft, einfach das "-x" rausnehmen und gut iss.

Geht mit sh, bash und ksh (und vermutlich jeder anderen Shell).

Atti
 
  • Gefällt mir
Reaktionen: BGY
Hallo Atti
Danke für den Tip. Habe nicht gewusst, dass es sowas gibt. Sehr hilfreich.
Gruss aus dem tropischen Schweizer Rheintal
Lazy
 
Zurück
Oben Unten