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