我正在使用已修补数十次的20年旧代码的项目。Linux测试表达式
有一个我从未见过的测试表达式,我无法弄清楚如何分解它实际上在做什么。
有一个日期变量,其格式为'YYYYMMDD'或'YYYYMMMDD'(例如'20160629'或'2016JUN29')。
测试是:
if [[ $datevar != *[0-9] ]]
then
<error notification>
exit 1
fi
有人能解释一下什么是 '* [0-9]' 的表达是干什么的? AFAICT无论$ date var包含什么,它都不会接受错误退出。根据生成日期的代码,它应该是'YYYYMMMDD'格式。
此代码最初在Sun Solaris上运行,但现在使用ksh shell在RHEL 6.4上运行。
看起来像一个非常自由的验证我?如果$ datevar包含任何(*)后跟一个[0-9]的数字,那么可能为什么一切都会通过 – sloven
您能否接受答案? – agilob