![跳過捕獲 shell 腳本中的錯誤](https://rvso.com/image/89179/%E8%B7%B3%E9%81%8E%E6%8D%95%E7%8D%B2%20shell%20%E8%85%B3%E6%9C%AC%E4%B8%AD%E7%9A%84%E9%8C%AF%E8%AA%A4.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
...