Sprawdzenie/walidacja formatu wprowadzonej daty w skryptach powłoki – sh w systemach Linux/Unix
W skryptach powłoki czasami istnieje konieczność walidacji formatu wprowadzonej daty.
Niektóre programy wymagają podania jej w formacie DD-MM-YYYY
, inne YYYY-MM-DD
, a jeszcze inne DD.MM.YYYY
.
Sprawdzenia formatu daty możemy dokonać przy wykorzystaniu funkcji warunkowej if
oraz zdefiniowanego wzorca.
Spójrzmy na przykład. Poniższy kod zapiszemy w pliku: skrypt.sh
if [[ "$1" =~ ^[0-9]{2}-[0-9]{2}-[0-9]{4}$ ]]; then echo "Wprowadziłeś poprawną datę: DD-MM-YYYY: $1" else echo "Błędny format daty. Prawidłowy format to: DD-MM-YYYY." exit fi
W przypadku kiedy wywołamy teraz: skrypt.sh 11-02-2021
otrzymamy komunikat:Wprowadziłeś poprawną datę: 11-02-2021
Jeżeli natomiast wywołamy skrypt: skrypt.sh 2021-02-11
otrzymamy komunikat:Błędny format daty. Prawidłowy format to: DD-MM-YYYY.
Poniżej przestawiam pozostałe wzorce dla poszczególnych formatów dat:
Format: YYYY-MM-DD
, np: 2021-02-11
if [[ "$1" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]]; then
Format: DD.MM.YYYY
, np: 21.02.2021
if [[ "$1" =~ ^[0-9]{2}\.[0-9]{2}\.[0-9]{4}$ ]]; then
Należy pamiętać, że powyższe wzorce nie zabepieczą nas przed błędą datą, np. 32-13-2012
, a jedynie sprawdzą format jej podania.