• Liebe User, bitte beachtet folgendes Thema: Was im Forum passiert, bleibt im Forum! Danke!
  • Hallo Gemeinde! Das Problem leidet zurzeit unter technischen Problemen. Wir sind da dran, aber das Zeitkontingent ist begrenzt. In der Zwischenzeit dürfte den meisten aufgefallen sein, dass das Erstellen von Posts funktioniert, auch wenn das Forum erstmal eine Fehlermeldung wirft. Um unseren Löschaufwand zu minimieren, bitten wir euch darum, nicht mehrmals auf 'Post Reply' zu klicken, da das zur Mehrfachposts führt. Grußworte.

shellscript: if test $1 -ne <regular-expression>; then

Mitglied seit
08.03.2004
Beiträge
1.574
Reaktionen
0
wie kann ich hier für <regular-expression> einen regulären Ausdruck einbauen?

Ich möchte prüfen, ob mein erster Parameter für das shellscript ein Datum in folgendem Format ist: yyyymmdd

eigentlich wollte ich folgenden regulären Ausdruck dafür einbauen: 20[0-9][0-9][0-1][0-9][0-3][0-9]

Das lässt zwar immernoch ein paar unzulässige Datumsangaben durch, aber wer es soweit verstanden hat, einen ordentlichen Datumsstring zu erstellen, der sollte das schon hinbekommen, dann auch ein wirklich existierendes Datum zu verwenden.

wenn ich jetzt prüfe:

if test $1 -ne 20[0-9][0-9][0-1][0-9][0-3][0-9]; then ...

meckert er rum... :heul:

hab auch schon verschiedene Kombinationen mit Arrays {} probiert... :/
 

cart

Technik/Software Forum
Mitglied seit
01.08.2002
Beiträge
4.873
Reaktionen
0
Ort
New York
Also die Expression würde ich zumindest irgendwie auf sowas aufbohren:
(20\d\d)(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])
 

The_Company

Guest
aus "man test":
Code:
       INTEGER1 -ne INTEGER2
              INTEGER1 is not equal to INTEGER2
Und jetzt verrate mir mal, wieso Du denkst, test kann mit Regexps umgehen?
 
Mitglied seit
08.03.2004
Beiträge
1.574
Reaktionen
0
hier sind erst 2 Posts über deinem und ich finde den nicht, wo jemand behauptet, test kann mit Regex umgehen.

Außerdem ist das hier kein philosophischer Diskussionsthread. Es geht darum, eine Frage zu beantworten. Nämlich: wie würdest du überprüfen, ob der eingegebene Parameter dem Datumsformat yyyymmdd entspricht?

Zugegeben, das Topic ist nicht sehr geschickt gewählt.
 

Bronzegraf

Guest
Hast Du Einfluss auf den/die Parameter? Dann definiere einfach eine Option "-d" an der direkt das Datum gehängt wird. Also: -d20080201 zum Beispiel.
 

The_Company

Guest
Original geschrieben von Sholvar
hier sind erst 2 Posts über deinem und ich finde den nicht, wo jemand behauptet, test kann mit Regex umgehen.

Außerdem ist das hier kein philosophischer Diskussionsthread. Es geht darum, eine Frage zu beantworten. Nämlich: wie würdest du überprüfen, ob der eingegebene Parameter dem Datumsformat yyyymmdd entspricht?

Zugegeben, das Topic ist nicht sehr geschickt gewählt.
Ach so. Die Frage klang nach "ey, test nimmt keine regexps, wtf, test is broken!"

Und zu der Frage, wie ich das machen wuerde: Wahrscheinlich gar nicht, wer Shell Scripten input gibt, der weiss, was er tut. Und ansonsten kannste sowas wie $DATUM=`echo $1 | egrep $REGEXP` machen, und das sollte dir das Datum zurueckgeben, wenn es eins war oder keinen Output geben, wenn es keins war.
 
Mitglied seit
08.03.2004
Beiträge
1.574
Reaktionen
0
2x Danke!

Einmal für den guten Lacher "die Leute, die meine Software benutzen, wissen was sie tun." :elefant: :elefant: :elefant:

Und das zweite mal für den guten Tipp. Ich denke, dass werde ich genauso nehmen.
 
Oben