我有一個Bash腳本來源。當這個腳本來源時,它在Bash腳本中運行一個函數。如果某個條件匹配,該函數應該終止腳本。如何在不終止腳本所在的shell的情況下完成此任務?如何擺脫源Bash腳本的功能
要清楚:我希望終止操作由源腳本中的函數完成,而不是在源腳本的主體中完成。我可以看到的問題是return
只是從函數返回到腳本的主體,而exit 1
終止了調用shell。
下面的小例子說明了這個問題:
main(){
echo "starting test of environment..."
ensure_environment
echo "environment safe -- starting other procedures..."
}
ensure_environment(){
if [ 1 == 1 ]; then
echo "environment problemm -- terminating..."
# exit 1 # <-- terminates calling shell
return # <-- returns only from function, not from sourced script
fi
}
main
改爲執行腳本。這樣,'exit'將退出它正在運行的子shell。 – fedorqui
有趣。你可以舉一個小例子來開始,那可以改進。例如。一個終止shell。 –
你問一些不可能的事情。你必須重構你的代碼。 –