![跳过捕获 shell 脚本中的错误](https://linux22.com/image/89179/%E8%B7%B3%E8%BF%87%E6%8D%95%E8%8E%B7%20shell%20%E8%84%9A%E6%9C%AC%E4%B8%AD%E7%9A%84%E9%94%99%E8%AF%AF.png)
我有一个编译程序的脚本。该程序首先使用命令编译源代码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
...