考虑这个脚本:
#!/bin/sh
foo=1
if [[ ! -z $foo ]]; then
echo abc
fi
Run Code Online (Sandbox Code Playgroud)
它使用 Bash 语法 [[ ... ]] 当我在 Ubuntu (dash) 上使用默认 shell 运行它时,它不起作用(如预期)。但是,它的返回码仍然为零。
$ ./tmp.sh
./tmp.sh: 4: ./tmp.sh: [[: not found
$ echo $?
0
Run Code Online (Sandbox Code Playgroud)
如果我不能依赖退出代码,如何在脚本中检测这种错误?