Unix Shell Script

Liebe Unix-Experten,

Ich brauch ein Unix Shell-Script dem ich einen Parameter
der Form yyyymmdd (Datum) mitgeben muß, und diesen auf gültig prüfe.
Bitte gebt mir einen Hinweis mit welchen Kommandos ich das
am besten lösen kann.

Vielen Dank schonmal…
Marie

Hallo Marie

Das Datum kannst Du ja einfach bei Aufruf des Scripts übergeben. Falls Du das übergebene mit dem aktuellen Datum vergleichen willst, dann hilft dir erstmal
date +%Y%m%d
(Gibt das Datum in der Form yyyymmdd aus). Das Ergebnis dann mit if (man bash) mit dem übergebenen Datum vergleichen.
Wie ich grade sehe wäre dies aber doppelt gemoppelt, da Du das aktuelle Datum ja eh mit date in eine Variable schreiben kannst.
Schreib doch mal kurz wie die Gültigkeit überprüfen möchtest.

Gruß
Martin

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Ich brauch ein Unix Shell-Script dem ich einen Parameter
der Form yyyymmdd (Datum) mitgeben muß, und diesen auf gültig
prüfe.
Bitte gebt mir einen Hinweis mit welchen Kommandos ich das
am besten lösen kann.

eine einfache Möglichkeit ist die Verwendung des UNIX Befehls egrep, der reguläre Ausdrücke prüft.

Für ein (t)csh kann man das z.B. so machen:

1. Parameter des Skripts ist das Datum in YYYYMMDD Format

if (echo "$1" | egrep -c '^[12][0-9]{3}(0[1-9]|10|11|12)(0[1-9]|[1-2][0-9]|30|31)$' != 0) then
echo „ist OK“
else
echo „ist nicht OK“
endif

Der Suchstring bedeutet:

^ Anfang des Strings
[12][0-9]{3}: Jahr beginnt mit 1 oder 2 und dann noch drei Ziffern
(0[1-9]|10|11|12): Monat 01-12
(0[1-9]|[1-2][0-9]|30|31): Tag 01-31
$ Ende des Strings

Diese Methode ignoriert leider Schaltjahre und die Monate, die keine 31 Tage haben. Letzteres könnte man mit einem längeren Suchstring noch abhandeln.

Ich hoffe, das hilft etwas.

Hallo Marie

Das Datum kannst Du ja einfach bei Aufruf des Scripts
übergeben. Falls Du das übergebene mit dem aktuellen Datum
vergleichen willst, dann hilft dir erstmal
date +%Y%m%d
(Gibt das Datum in der Form yyyymmdd aus). Das Ergebnis dann
mit if (man bash) mit dem übergebenen Datum vergleichen.
Wie ich grade sehe wäre dies aber doppelt gemoppelt, da Du das
aktuelle Datum ja eh mit date in eine Variable schreiben
kannst.
Schreib doch mal kurz wie die Gültigkeit überprüfen möchtest.

Gruß
Martin

Hallo Martin,

Es geht um einen Datentausch mit anderen Rechnern.
Mein Script soll entweder täglich ohne Argument, dann ist das
Systemdatum gemeit, aufgerufen werden, oder fallweise mit irgendeinem Datum das gültig sein muß.
Dieses Datum ist teil des Namens jener Files die zur Übertragung
mittels FTP bereitgestellt werden. Im Normalfall sind das die Daten des aktuellen Tages, manchmal müssen aber ältere versenden,
deshalb die Datumsprüfung.

Gruß
Marie

Lieber Holger !

DANKE, DANKE, DANKE !!!

Marie