Überprüfen Sie das Datumsformat in einem Shell-Skript

8

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?

    
Jairo Franchi 11.09.2013, 01:35
quelle

10 Antworten

18

Verwenden Sie Datum

%Vor%

Wenn Sie keine 0 erhalten, ist das Datum im ungültigen Format.

    
P̲̳x͓L̳ 11.09.2013, 01:49
quelle
9

Die einfachste Lösung, die immer noch perfekt funktioniert, ist die folgende:

%Vor%

Es besteht darin, 2 Überprüfungen zu kombinieren:

  • Der erste Teil prüft, ob das folgende Format hat: NNNN-NN-NN
  • Der zweite Teil prüft, ob es sich um ein gültiges Datum handelt

Sie benötigen die zwei Überprüfungen, weil:

  • Wenn Sie die erste Überprüfung nicht durchführen, wird date mit dem Code 0 beendet, auch wenn Ihre Variable ein gültiges Datum im anderen Format ist
  • Wenn Sie die zweite Prüfung nicht durchführen, können Sie selbst für Variablen wie 2016-13-45 mit einer 0 enden.
Vic Seedoubleyew 10.05.2016 16:32
quelle
2

Überprüfen Sie zuerst die Form der Eingabe mit dem Regex. Verwenden Sie dann awk, um zu mm / dd / yyyy zu wechseln, und verwenden Sie das Datum zur Bestätigung. Sie können den folgenden Ausdruck in Ihrer if -Anweisung verwenden:

%Vor%     
augurar 11.09.2013 04:50
quelle
2

Der einfachste Weg für dd/mm/yyyy genau in Bash ist:

%Vor%

Oder

%Vor%     
konsolebox 11.09.2013 08:18
quelle
2

Wie wäre es mit awk :

? %Vor%

Es druckt "gut", wenn sein gültiges Datum sonst "schlecht"

ausdruckt     
VDR 31.10.2013 15:45
quelle
2
%Vor%     
chelabim 18.03.2014 11:37
quelle
1

Hier ist eine Funktion um einige Daten zu überprüfen:

%Vor%     
javaPlease42 19.12.2013 16:15
quelle
1

'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.

    
Manikandan 21.04.2016 15:50
quelle
0

Ich habe dieses Bash-Skript geschrieben, um das Datum zu validieren. Ich kann Mont als alphanumerisch akzeptieren.

%Vor%     
quelle
-1

Blockquote

%Vor%     
chelabim 18.03.2014 06:28
quelle

Tags und Links