Ich muss ein Shell-Skript erstellen, wobei einer der Parameter das Datum im Format TT / MM / JJJJ ist. Meine Frage ist, wie kann ich überprüfen, ob das Datum, das als Parameter übergeben wurde, wirklich diesem Datumsformat folgt? Ich habe versucht, den Befehl grep wie folgt zu verwenden:
%Vor%aber es gab nicht das richtige Format, weil der Tag zum Beispiel 33, 34 sein kann, (...), das ist nicht wirklich das richtige Format. Wer weiß etwas, das wirklich überprüfen kann, ob das vergangene Datum wirklich dem Format TT / MM / JJJJ folgt?
Die einfachste Lösung, die immer noch perfekt funktioniert, ist die folgende:
%Vor%Es besteht darin, 2 Überprüfungen zu kombinieren:
das folgende Format hat: NNNN-NN-NN
Sie benötigen die zwei Überprüfungen, weil:
date
mit dem Code 0 beendet, auch wenn Ihre Variable ein gültiges Datum im anderen Format ist
2016-13-45
mit einer 0 enden.
Der einfachste Weg für dd/mm/yyyy
genau in Bash ist:
Oder
%Vor%'X="2016-04-21" dann prüfen, ob der untere Wert 1 oder 0 ist.
cal echo $x | cut -c 6-7
echo $x | cut -c 1-4
2 & gt; / dev / null | grep -c echo $x | cut -c 9-10
Wenn der Wert 1 ist, ist er gültig, sonst ist er nicht gültig.
Ich habe dieses Bash-Skript geschrieben, um das Datum zu validieren. Ich kann Mont als alphanumerisch akzeptieren.
%Vor%Tags und Links bash shell date if-statement unix