跳過捕獲 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
...

相關內容