日付パターンを一致させるためにコマンドを使用しようとしましたが、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つの日付入力を評価しません。
ベストアンサー1
この試み。 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})$
同様です。