有什么办法让bash脚本出错并在遇到[: ==: unary operator expected
错误时返回非零退出代码吗?
我已经在线搜索并尝试添加set -euxo pipefail
,但是这些方法都无法按预期工作。 (在macOS和Linux上测试)。
$ ./a.sh
./a.sh: line 4: [: ==: unary operator expected
barfoo
$ echo $?
0
#!/bin/bash
set -euo pipefail
if [ == "foo" ];
then
echo "foobar"
exit 1
fi
echo "barfoo"
Bash打印[: ==: unary operator expected
并继续执行其余代码,最后返回0。我已经知道如何解决“期望的一元运算符”问题,只是很好奇我应该怎么做才能使脚本立即以非零代码离开。
感谢您的帮助。
答案 0 :(得分:0)
您必须看到Bash脚本作为终端。如果您打开终端并输入错误的命令,例如chmox -x <file>
,则终端不会退出,而是显示警告并保持打开状态,以便您继续工作。
让Bash从文件执行它,而不是键入很多命令。