我有一个被引用的Bash脚本,在被引用时,它会运行Bash脚本中的一个函数。如果满足某个条件,该函数应终止脚本。如何在不终止引用脚本的shell的情况下实现此操作?
明确一点:我希望终止操作是由被引用的shell脚本中的函数完成的,而不是由被引用的shell脚本的主体完成的。我能看到的问题是,return仅从函数返回到脚本的主体,而exit 1终止了调用shell。
以下是问题的最小示例:
明确一点:我希望终止操作是由被引用的shell脚本中的函数完成的,而不是由被引用的shell脚本的主体完成的。我能看到的问题是,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。 - fedorquireturn
不会终止被调用的脚本(只会终止函数),而exit 1
则会终止调用的shell。我需要介于两者之间的解决方案! - d3pd