跳过捕获 shell 脚本中的错误

跳过捕获 shell 脚本中的错误

我有一个编译程序的脚本。该程序首先使用命令编译源代码configure && make,然后使用make test.该脚本还用于set -e捕获错误。

现在,我想做的是保持脚本中的设置,并在遇到一些错误set -e时仍然继续运行脚本。make test我曾尝试使用make -k test即使遇到错误也可以运行测试,但它被命令捕获set -e并停止。

我还知道哪些测试会失败,所以有什么方法可以告诉脚本跳过捕获这些错误。

答案1

make test || true

例如

#!/bin/sh
set -e
echo hello
make test || true
echo done

将会导致

hello
make: *** No rule to make target `test'.  Stop.
done

在本例中,失败是由于缺少规则(没有 Makefile:-)),但我们可以看到脚本仍在继续。

答案2

set -e可以用 翻转set +e

#!/bin/sh
set -e
configure && make
set +e
make test
...

相关内容