我有一个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。 –
你问一些不可能的事情。你必须重构你的代码。 –