【发布时间】:2012-08-29 01:35:57
【问题描述】:
我目前正在编写一个 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 是的,是一个错字。修好了。