您可以尝试在 GNU 上测试时间date
。请注意,这会失败:
$ atarg="now+7mintes"
$ date -d "$atarg" >/dev/null 2>&1 || echo "Bad time"
Bad time
虽然这成功:
$ atarg="now+7minutes"
$ date -d "$atarg" >/dev/null 2>&1 || echo "Bad time"
换句话说,当date -d
给出一个错误的参数时,date
以非零返回码退出。这允许您在 bash 下测试日期是否正确,至少就date
接受它而言。
我没有找到任何文档来表明这一点at
并date
使用相同的代码来解释日期。因此,这种方法无法保证。
问题
事实证明,date
它的时间格式比at
. 正如 XuWang 所指出的,date
接受18minutes
为简写now + 18minutes
但at
不接受:
$ date -d "18minutes"
Fri May 27 15:30:59 PDT 2016
$ echo true | at "18minutes"
syntax error. Last token seen: minutes
Garbled time