我正在使用已修補數十次的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