退出shell脚本执行的状态代码

时间:2017-07-26 12:26:07

标签: shell

我正在尝试从另一个shell脚本(B)运行shell脚本(A)。出于测试目的,shell脚本(A)将始终抛出异常/错误(仅用于测试)。我正在尝试在运行该脚本后立即获取退出状态代码。

代码:

案例1:

errormsg=$(sample.sh 2>&1)
if [ $? -ne 0 ]
then
echo $?
echo "Successful."
else
echo $?
echo "Error."

输出:

0
Successful

案例2:

errormsg=$(sample.sh 2>&1)
echo $?
if [ $? -ne 0 ]
then
echo $?
echo "Successful."
else
echo $?
echo "Error."

输出:

1
1
Error

为什么输出有差异?输出不应该是'错误'案件1也是?

1 个答案:

答案 0 :(得分:0)

$?总是给出上次执行命令的结果。

在案例1中,这是您的外部脚本,但在案例2中,它是echo $?

这就是你得到不同结果的原因