最佳答案
我目前正在编写一个 bash 测试框架,其中在测试函数中可以使用标准 bash 测试([[
)和预定义的匹配器。匹配器是’[[’的包装器,除了返回一个返回代码之外,还设置一些有意义的消息,说明预期的结果。
例如:
string_equals() {
if [[ ! $1 = $2 ]]; then
error_message="Expected '$1' to be '$2'."
return 1
fi
}
So, when a matcher is used, and it fails, only then an error_message is set.
现在,稍后,我将测试这些测试是否成功。如果成功了,我用绿色打印期望,如果失败了,用红色打印。
Furthermore, there may be an error_message set, so I test if a message exists, print it, and then unset it (because the following test may not set an error_message
):
if [[ $error_message ]]; then
printf '%s\n' "$error_message"
unset -v error_message
fi
现在我的问题是,取消变量设置是更好,还是直接设置为“ ,比如
error_message=''
哪个更好?有什么区别吗?或者也许我应该有一个额外的标志,表明消息已设置?