[英]Shell REGEX for date
如果用户输入的日期格式不是(YYYY-MM-DD),但我无法弄清楚,我会尝试修复用户的输入。 这是我所拥有的:
while [ "$startDate" != "^[0-9]{4}-[0-9]{2}-[0-9]{2}$" ]
do
echo "Please retype the start date (YYYY-MM-DD):"
read startDate
done
代替!=
,您必须使用! $var =~ regex
! $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"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.