为什么 bash 脚本在"[: ==: unary operator expected"时不会立即离开代码



有什么办法让 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。我已经知道如何解决"一元运算符预期"问题,只是好奇我应该怎么做才能使脚本立即离开非零代码。

感谢您的任何帮助。

您必须将 Bash 脚本视为终端。例如,如果您打开终端并错误键入命令chmox -x <file>,终端不会退出,而是打印警告并保持打开状态,以便您继续工作。

您不需要键入大量命令,而是让 Bash 从文件中执行它。

最新更新