的退出代碼這是myscript.sh
:擊:陷阱
#!/bin/bash
function mytrap {
echo "Trapped!"
}
trap mytrap EXIT
exit 3
當我運行它:
> ./myscript.sh
echo $?
3
爲什麼是腳本的退出代碼的陷阱一樣的退出代碼沒有它?通常,函數隱式返回最後執行的命令的退出代碼。在這種情況下:
- 回聲返回0
- 我希望
mytrap
返回0 - 由於
mytrap
是最後執行的功能,腳本應該返回0
這是爲什麼不案件?我的思想在哪裏錯了?
人提示:這是一個好主意,始終使用'設置-e'並在「設置-o pipefail」你bash腳本。一旦一個命令失敗,這將立即停止腳本。它可以讓你在半焙烤狀態下做愚蠢的事情之前發現錯誤並中止。 –