http://www.pronix.de -> Forum -> Linux-Unix Programmierung

Forum: Linux-Unix Programmierung

Moderatoren: juergen, Martin Conrad

Thema: Shell programmierung - ein char aus einer variablen lesen

  • (nur registrierte Mitglieder)
Moin moin
ich bin Neuling mit der Shellprogrammierung und bisher nur c gewöhnt. Naja ich vermute es gibt eine ganz einfache Lösung für mein Problem und zwar will ich mit einem Shell-Skript ein Datum einlesen und überprüfen.
Das ganze sollte dann im Aufruf etwa so aussehen
$ testprog 19.06.2010

jetzt wollte ich einfach nur an den Wert des z.B. Tages kommen, aber mir ist nicht klar wie ich auf einzelne char's des Arguments rankomme.
Mein Ansatz war das ich das Argument als Variable anlege (mit var=$1), und dann auf die einzelnen char's zugreifen kann. Dachte Variablen werden als Strings interpretiert und ich könnte dann mit sowas ähnlichem wie $var[2] oder ${var[2]} an die "9" von "19.06.2010" rankommen.
Dem ist aber nicht so.
Letzt endlich möchte ich das Datum auslesen und mit dem aktuellem vergleichen.

Ich würde mich über eine paar Anregungen freunen, wie ich das Problem angehen kann.
Ordam
 
Es kommt auf die Shell an, die du nutzt. Da nutzt wirklich jeder was Anderes. Daher greift man innerhalb so eines Scriptes gerne auf externe Programme, wie sed, awk, oder perl zurück, die auf den meisten Systmen einfach vorhanden sind.

Kleines Beispiel für die Bash, anhand des Beispiels solltest du auch den Monat rauspflücken können:


dn=20.06.2010
d=${dn%%\.*}
y=${dn##*\.}


Ja, das ist fies, es iost aber logisch aufgebaut, wenn man weiss, dass % und # Operatoren sind, die ein- und mehrfach vorkommen dürfen. Variablenersetzung und bash sind die passenden Suchbegriffe.

Bis denne
Martin

--
0xC0FFEE

 
Guter Tip mit der Shell ... ich hatte mich auch schon gewundert warum ein paar Befehle nicht funktionieren im meinem Tutorial.
ich hatte vorher die Bourne Shell mehr unbewusst benutzt die Bash scheint mir komfortabler.

Vielen dank für die Idee mit den Operatoren, werde ich nochmal verfolgen.
Ich bin das Problem jetzt doch etwas anders angegangen


eingabe=$1
tag=${eingabe:0:2}
trennzeichen1=${eingabe:2:1}
monat=${eingabe:3:2}
trennzeichen2=${eingabe:5:1}
jahr=${eingabe:6:4}


aber vielen Dank für die Anregungen.

Ich habe jetzt nur halbherzig auf die Unterschiede zwischen bash und sh gegooglet, aber die Ergebnisse waren nicht so befriedigent.
Gibt es irgendwo ein gutes Tutorial, wo die Unterschiede herrausgearbeitet werden? Oder ist das eher ein bücherfüllendes Thema?

MfG
Ordam
 
  • (nur registrierte Mitglieder)