M.R*_*M.R 1 bash shell exit-code
我有两个脚本主脚本和子脚本,我使用源脚本调用下脚本,如果未安装指定的包,那么它应该返回退出代码1。
如果我使用运行主脚本,bash main.sh我无法从主脚本获取 subScriptExitCode
主脚本
source "sub.sh"
subScriptExitCode=$?
log "subScript ExitCode: $subScriptExitCode"
if [ $subScriptExitCode -ne 0 ]; then
exit $subScriptExitCode
fi
Run Code Online (Sandbox Code Playgroud)
子脚本
type -p <package>
subScriptExitCode=$?
if [ $subScriptExitCode -ne 0 ]; then
exit 1
fi
Run Code Online (Sandbox Code Playgroud)
当获取文件时,不要使用exit,因为这将终止整个执行。相反,return在 sub.sh 中使用:
返回[n]
导致函数退出并返回 n 指定的返回值。如果在函数外部使用,但在 . (source) 命令,它会导致 shell 停止执行该脚本,并返回 n 或脚本内执行的最后一个命令的退出状态作为脚本的退出状态。如果在函数外部使用并且不是在 . 执行脚本期间使用,则返回状态为 false。
type -p <package>
subScriptExitCode="$?"
if [ "$subScriptExitCode" -ne 0 ]; then
return 1
fi
Run Code Online (Sandbox Code Playgroud)