(YYYY-MM-DD)ではない不正な日付形式を入力してもユーザーの入力を修正しようとしていますが、それはわかりません。ここで私が持っているものです。シェルREGEXの日付
while [ "$startDate" != "^[0-9]{4}-[0-9]{2}-[0-9]{2}$" ]
do
echo "Please retype the start date (YYYY-MM-DD):"
read startDate
done
(YYYY-MM-DD)ではない不正な日付形式を入力してもユーザーの入力を修正しようとしていますが、それはわかりません。ここで私が持っているものです。シェルREGEXの日付
while [ "$startDate" != "^[0-9]{4}-[0-9]{2}-[0-9]{2}$" ]
do
echo "Please retype the start date (YYYY-MM-DD):"
read startDate
done
代わりの!=
、あなたがregex comparisonsを実行するために! $var =~ regex
を使用する必要があります。
[[ $date =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]]
^^
スクリプトは次のようにすることができるように:
date=""
while [[ ! $date =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]]; do
echo "enter date (YYYY-MM-DD)"
read $date
done
なぜ日付プログラムを使用して間違ったフォーマットを希望のフォーマットに変換しないでください。
$ date -d "06/38/1992" +"%Y-%m-%d"
1992-06-28
また、戻り値を確認して変換の失敗を確認することもできます。
$ date -d "06/38/1992" +"%Y-%m-%d"
date: invalid date ‘06/38/1992’
$ [ -z $? ] || echo "Error, failed to parse date"