Saya mencoba mencocokkan pola tanggal menggunakan case
perintah tetapi tidak berfungsi. Ada yang bisa bantu saya ?
Masukan :01/05/1900
atau 5/6/1900
Pernyataan kasus yang digunakan:
ptn="[0-9]|[0-9][0-9]/[0-9]|[0-9][0-9]/[0-9][0-9]|[0-9][0-9][0-9][0-9]"
case "$dt" in
$ptn ) echo "valid pattern" ;;
*) echo "invalid"
esac
Tetapi pola yang digunakan dalam pernyataan kasus tidak mengevaluasi 2 input tanggal di atas.
Jawaban yang Diterima:
Coba ini. case
hanya mengerti gumpalan, jadi penanganan regexp tidak mudah. =~
operator menawarkan beberapa solusi di sini.
#!/bin/bash
INP="01/05/1900"
ptn="^([0-9]|[0-9][0-9])/([0-9]|[0-9][0-9])/([0-9][0-9]|[0-9][0-9][0-9][0-9])$"
if [[ $INP =~ $ptn ]] ; then
echo valid pattern
else
echo invalid
fi
Jika Anda ingin mengurangi ukuran regexp, ^[0-9]{1,2}/[0-9]{1,2}/([0-9]{2}|[0-9]{4})$
bekerja dengan baik juga.
Bagaimana Mendapatkan Ls Untuk Mencantumkan Direktori Dengan Trailing Forward-slash?
Linux – Mendapatkan Hanya Os Open-source Sejati yang Berjalan di Ponsel? Android?