日付パラメータがyyyy-mm-dd形式であることを確認してください。

日付パラメータがyyyy-mm-dd形式であることを確認してください。

日付パラメータが正しい形式(YYYY-MM-DD)であることを確認する方法はありますか?

Webからこれを得ましたが、私にはうまくいきません。

date "+%Y-%m-%d" -d "2015-10-11" > /dev/null  2>&1
echo $?

結果が出ると予想したが、0そうではなかった。誰か他の方法を教えてもらえますか?

ベストアンサー1

bash次に、以下で正しい形式(YYYY-MM-DD)を確認します(組み込み正規表現一致を使用)。

if [[ $1 =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]]
  then echo "Date $1 is in valid format (YYYY-MM-DD)"
  else echo "Date $1 is in an invalid format (not YYYY-MM-DD)"
fi

ランニング:

./script.sh 2015-12-10

出力:

Date 2015-12-10 is in valid format (YYYY-MM-DD)

日付自体が有効であることを確認せずに日付のみを確認してください。滞在(質問に記載されているように、「日付パラメータが正しい形式(YYYY-MM-DD」)であることを確認してください。)

日付形式を確認する必要がある場合そして日付値を確認するには、以下を試してください。

if [[ $1 =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]] && date -d "$1" >/dev/null
      then echo "Date $1 is valid and matches the format (YYYY-MM-DD)"
fi

これにより、0000-88-77などの正規表現に一致する無効な日付が削除されます。

(この提案について@glenn jackmanに感謝します。)

おすすめ記事