检查 bash 脚本中的无效日期

检查 bash 脚本中的无效日期

我正在检查有效日期scrpt.bash test 2019-05-03

date -d $2 2>: 1>:; c=$?

如果$c为 1,则日期无效。如果我输入,2019-05-03我会得到正确的 0。如果我输入,2019-05-03u我会得到一个 0,这是不正确的。我可以输入2019-05-03uu然后它会抛出错误。我怎样才能检查日期是否有效。

答案1

如果日期始终以这种格式提供:“2019-05-03”,则这可能始终有效:

#!/bin/sh -

if [ -n "$2" ] && [ "$(date -d "$2" +%Y-%m-%d 2> /dev/null)" = "$2" ]; then
     echo 'This date is valid'
fi

相关内容