我正在查看 Google 的 bash 脚本风格指南,发现他们引用了退出状态变量$? 这里。
if [[ "$?" -ne 0 ]]; then
error_message
fi
我认为返回值总是数字,那么有什么理由引用它们呢?
这只是一个好习惯吗(因为你想引用其他特殊的 shell 变量,如“$@”)?
答案1
强烈推荐
你应该读一下这个精彩的答案更多细节。
设置IFS
包含数字可能会破坏您的代码:
$ IFS=0
$ echo test
$ [ $? -eq 0 ] && echo done
bash: [: : integer expression expected
有些 shell 可能IFS
从环境继承(dash
, ash
),有些则不然(bash
, zsh
, ksh
)。但是有人可以控制环境,你的脚本无论如何都会中断($#
,$!
也会受到影响)。
请注意,在您的示例中,您使用了 new test [[...]]
,因此字段拆分已关闭,在这种情况下您不需要引用。如果你使用旧的测试,那就很重要了[...]
。
$ IFS=0
$ echo test
$ [[ $? -eq 0 ]] && echo done
done