繁体   English   中英

Shell REGEX日期

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM