我有一个 shell 脚本,我想根据变量的值退出它ERROR_COUNT
。我可以写
if [ ${ERROR_COUNT} -gt 0 ]
then
echo "Exiting unsuccessfully";
exit 1;
fi
echo "Exiting successfully";
exit;
或者
if [ ${ERROR_COUNT} -gt 0 ]
then
echo "Exiting unsuccessfully";
exit 1;
else
echo "Exiting successfully";
exit;
fi
这两种方法有什么问题吗?
答案1
就将发生的情况而言,两种编写分支的方式之间没有技术差异。这是风格和个人喜好的问题。
else
如果第一个分支正在退出,一些开发人员不喜欢在 if 语句的分支中无条件退出。
我可能会把代码写成
if [ "$ERROR_COUNT" -ne 0 ]; then
echo 'There were errors' >&2
exit 1
fi
# echo 'No errors' >&2
请注意删除的分号、引用的变量扩展和删除的最后一个exit
(在脚本末尾隐式)。我将测试更改为-ne 0
from-gt 0
因为它更清晰(至少对我来说)。
我还更改了两条诊断消息的输出,以便它们进入标准错误流(并以对用户更有用的方式改进它们)。最后一个是否echo
应该存在是有争议的,因为除了成功执行之外实际上没有什么可报告的(我将其注释掉了)。