从另一个脚本中获取shell脚本并检查返回码

ami*_*min 14 bash shell

我想从另一个脚本中获取文件,例如name.sh,并检查返回代码并确定它的错误代码.如果我使用

source name.sh
Run Code Online (Sandbox Code Playgroud)

然后如果name.sh返回非零返回码我的主脚本停止运行但我需要决定退出代码天气继续或停止.

如果我使用

ret_code="`source name.sh`"
echo $ret_code
Run Code Online (Sandbox Code Playgroud)

然后ret_code为null并且不打印错误代码.我不能用这些:

sh name.sh
./name.sh
bash name.sh
Run Code Online (Sandbox Code Playgroud)

因为name.sh不可执行,我不希望它是可执行的

Grz*_*Żur 14

文件不需要可执行即可运行sh name.sh.比使用$?.

sh name.sh
ret_code=$?
Run Code Online (Sandbox Code Playgroud)

  • 我认为你误解了阿明的要求。他正在获取文件,而不是运行它。来源的返回值只是最后执行的命令的返回值。 (3认同)

unx*_*nut 8

返回码应该在变量中$?.您可以执行以下操作:

source name.sh         # Execute shell script
ret_code=$?            # Capture return code
echo $ret_code
Run Code Online (Sandbox Code Playgroud)

  • 使用`source`的目的是在当前shell中运行脚本.因此,`exit`也会停止当前的shell.你的原始问题明确要求使用`source`,我认为你知道后果. (5认同)