我目前正在編寫一個bash測試框架,在測試函數中,可以使用標準bash測試([[
)以及預定義的匹配器。匹配器是'[''的包裝,並且除了返回一個返回碼,還設置了一些有意義的信息來說明預期的結果。使用未設置與設置變量爲空
實施例:
string_equals() {
if [[ ! $1 = $2 ]]; then
error_message="Expected '$1' to be '$2'."
return 1
fi
}
所以,當使用一個匹配器,並且它出現故障,只有一個ERROR_MESSAGE被設置。
現在,在稍後的某個時刻,我測試測試是否成功。如果成功了,我會打印綠色的期望,如果紅色失敗。
此外,也有可能是ERROR_MESSAGE集,所以我測試是否存在消息,打印出來,然後再取消它(因爲下面的測試可能不會設置error_message
):
if [[ $error_message ]]; then
printf '%s\n' "$error_message"
unset -v error_message
fi
現在我的問題是的,如果是更好地取消設置變量,或只是將其設置爲「」,像
error_message=''
哪一個更好?它實際上有所作爲嗎?或者,也許我應該有一個額外的標誌表明該消息設置?
如果你從不比較'error_message'和其他任何東西,我會說沒關係。但是,我認爲你需要'[[$ error_message]]',否則你正在測試字符串「error_message」存在。 – chepner
@chepner是的,是一個錯字。修復。 – helpermethod