GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Überprüfen Sie, ob das Argument ein gültiges Datum in der Bash-Shell ist

Sie können die Tages-, Monats- und Jahreswerte aus dem Eingabedatumswert MM-TT-JJJJ extrahieren und stattdessen im eindeutigen (ISO-) Format JJJJ-MM-TT validieren (Sie können ein Datum im Format TT-MM-JJJ als validieren "korrekt" mit Datum, z. B. 25-12-2010, aber es ist kein gültiges MM-TT-JJJ-Datum, daher muss zuerst das Datumsformat geändert werden)

Ein gültiges Datum im richtigen Format ist OK

30. November 2005 gültig:

$ DATE=11-30-2005; d=${DATE:3:2}; m=${DATE:0:2}; Y=${DATE:6:4}; echo "year=$Y, month=$m, day=$d"; if date -d "$Y-$m-$d" &> /dev/null; then echo VALID; else echo INVALID; fi
year=2005, month=11, day=30  
VALID

$ DATE=11-30-2005; if date -d "${DATE:6:4}-${DATE:0:2}-${DATE:3:2}" &> /dev/null; then echo VALID; else echo INVALID; fi
VALID

Ein ungültiges Datum im richtigen Format ist NICHT OK

31. November 2005 bestätigt nicht:

$ DATE=11-31-2005; d=${DATE:3:2}; m=${DATE:0:2}; Y=${DATE:6:4}; echo "year=$Y, month=$m, day=$d"; if date -d "$Y-$m-$d" &> /dev/null; then echo VALID; else echo INVALID; fi
year=2005, month=11, day=31  
INVALID

$ DATE=11-31-2005; if date -d "${DATE:6:4}-${DATE:0:2}-${DATE:3:2}" &> /dev/null; then echo VALID; else echo INVALID; fi
INVALID

Ein gültiges Datum im falschen Format ist NICHT OK

Der 20. April 1979 im Format TT-MM-JJJJ gilt nicht als MM-TT-JJJJ-Datum:

$ DATE=20-04-1979; d=${DATE:3:2}; m=${DATE:0:2}; Y=${DATE:6:4}; echo "year=$Y, month=$m, day=$d"; if date -d "$Y-$m-$d" &> /dev/null; then echo VALID; else echo INVALID; fi
year=1979, month=20, day=04  
INVALID

$ DATE=20-04-1979; if date -d "${DATE:6:4}-${DATE:0:2}-${DATE:3:2}" &> /dev/null; then echo VALID; else echo INVALID; fi
INVALID

Alternative, einfachere Methode:BASH-Variablenzeichenfolge verwenden, Bindestriche durch Schrägstriche ersetzen

$ DATE="04-30-2005"; [[ $(date -d "${DATE//-/\/}" 2> /dev/null) ]] && echo VALID || echo INVALID
VALID

$ DATE="04-31-2005"; [[ $(date -d "${DATE//-/\/}" 2> /dev/null) ]] && echo VALID || echo INVALID
INVALID

Sie können mit date -d "datestring" nachsehen

Also date -d "12/31/2012" ist gültig, aber die Verwendung von Bindestrichen, z. date -d "12-31-2012" , gilt nicht für date .

Sie können auch Wörter verwenden:date -d 'yesterday' oder date -d '1 week ago' sind beide gültig.


Linux
  1. So überprüfen Sie die Zeitzone in Linux

  2. Wie überprüfe ich das Installationsdatum Ihres Linux-Betriebssystems?

  3. Wie überprüfe ich die Teilzeichenfolge in Shell Script Bash?

  4. Spezielle Bash-Parameter mit 4 Beispiel-Shell-Skripten erklärt

  5. Bash-Positionsparameter mit 2 Beispiel-Shell-Skripten erklärt

.bashrc vs. .bash_profile

So überprüfen Sie, ob eine Datei oder ein Verzeichnis in der Bash-Shell vorhanden ist

So echoen Sie eine neue Zeile in Bash-Shell-Skripten

Bash-Shell-Skript - Suchen Sie nach einem Flag und holen Sie sich seinen Wert

Wie kann ich überprüfen, ob eine Datei in einem bestimmten Verzeichnis in einem Bash-Skript vorhanden ist?

Überprüfen Sie, ob einer der Parameter eines Bash-Skripts mit einer Zeichenfolge übereinstimmt