我對 shell 腳本進行了一些探索并撰寫了這個腳本。當構建命令失敗時,它必須提供錯誤訊息并退出。
我知道 exit 1 會關閉它正在運行的當前 shell。并且 exit 陳述句在花括號內(意味著它在同一個 shell 上執行)。但是當這個腳本在./testScript.sh它停止執行 test()時運行時,testTwo() 不會被呼叫,并且終端保持打開狀態。
雖然這正是我正在尋找的功能,但我的問題是為什么它不會因為出口 1 而關閉終端;命令?git bash 在運行腳本時是否默認創建子shell?
我知道它不是因為它在函式中被呼叫。我確實嘗試在沒有函式的情況下在腳本中運行 exit 陳述句,但它仍然沒有關閉終端。
任何有關 git bash 和 exit 命令實際作業的見解都將非常有用。
謝謝!
# testScript.sh
function test() {
dotnet build -c Debug sample.csproj || { echo -e "${RED}=== Build Failed"; exit 1; }
}
function testTwo() {
echo "== executing test two function."
}
function all()
{
pushd .
test
testTwo
popd
}
all "$@"
uj5u.com熱心網友回復:
git bash 在運行腳本時是否默認創建子shell?
它不是( ). shell產生一個單獨的行程來執行命令。該行程不繼承bash變數和函式,只繼承匯出的變數,即它不是一個子shell。
不要使用function name(),只是name()。請參閱https://wiki.bash-hackers.org/scripting/obsolete。使用 shellcheck.net 檢查腳本。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/314544.html
下一篇:檢查命令輸出中是否存在字串
