case
を使用して日付パターンを一致させようとしています コマンドが機能していません。誰かが私を助けてくれますか?
入力 :01/05/1900
または5/6/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]"
case "$dt" in
$ptn ) echo "valid pattern" ;;
*) echo "invalid"
esac
ただし、caseステートメントで使用されているパターンは、上記の2つの日付入力を評価していません。
承認された回答:
これを試して。 case
グロブのみを理解するため、正規表現の処理は簡単ではありません。 =~
ただし、オペレーターはここでいくつかのソリューションを提供します。
#!/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
正規表現のサイズを小さくしたい場合は、^[0-9]{1,2}/[0-9]{1,2}/([0-9]{2}|[0-9]{4})$
同様にうまく機能します。