4

ユーザーが入力した日付と時刻のパラメーターを使用するシェル スクリプトがあります。日付は mm/dd/yyyy、時刻は HH:MM です。ユーザーが適切な日付を入力したことを確認する最も簡単な方法は何ですか [たとえば、月は 12 未満である必要があります....時間については MM は 60 未満である必要があります...タイムスタンプ?

4

3 に答える 3

2

UNIX日付ツールを使用して解析および検証し、リターン コードをテストすることができます。

有効な日付、戻りコード 0:

joel@bohr:~$ date -d "12/12/2000 13:00"
Tue Dec 12 13:00:00 GMT 2000
joel@bohr:~$ echo $?
0

無効な日付、戻りコード 1:

joel@bohr:~$ date -d "13/12/2000 13:00"
date: invalid date `13/12/2000 13:00'
joel@bohr:~$ echo $?
1

+FORMATオプション ( man date )を使用して、日付によって受け入れられる入力形式を変えることができます。

すべてを小さなスクリプトとしてまとめます。

usrdate=$1
date -d "$usrdate"  > /dev/null 2>&1
if [ $? -eq 0 ]; then
        echo "Date $usrdate was valid"
else
        echo "Date $usrdate was invalid"
fi
于 2011-01-06T12:55:35.640 に答える
0

(遅い答え)

あなたが使用できるもの:

...
DATETIME=$1

#validate datetime..
tmp=`date -d "$DATETIME" 2>&1` ; #return is: "date: invalid date `something'"
if [ "${tmp:6:7}" == "invalid" ]; then
    echo "Invalid datetime: $DATETIME" ;
else
    ... valid datetime, do something with it ...
fi
于 2014-02-11T11:35:34.203 に答える
0

grep入力が正しい形式に準拠していることを確認するために使用できます。

if ! echo "$INPUT" | grep -q 'PATTERN'; then
   # handle input error
fi

ここで、PATTERNはすべての有効な入力と有効な入力のみに一致する正規表現です。そのパターンの構築はあなたに任せます;-)。

于 2011-01-06T12:46:15.040 に答える