检查bash脚本回显的命令的最后一个退出代码

检查bash脚本回显的命令的最后一个退出代码,bash,return-value,expect,Bash,Return Value,Expect,此脚本的输出将是: #!/bin/bash test(){ return 1; } VAR=$(expect -c 'puts "Exiting"; exit 1;'); echo "$VAR"; RETURN_CODE=$?; echo $RETURN_CODE; test RETURN_CODE=$?; echo $RETURN_CODE; 我猜第一个0是“echo”的返回码。我说得对吗?如果是,那么如何捕获expect的返回代

此脚本的输出将是:

#!/bin/bash

test(){
        return 1;
}

VAR=$(expect -c 'puts "Exiting"; exit 1;');
echo "$VAR";
RETURN_CODE=$?;
echo $RETURN_CODE;

test
RETURN_CODE=$?;
echo $RETURN_CODE;

我猜第一个0是“echo”的返回码。我说得对吗?如果是,那么如何捕获
expect
的返回代码?

在运行任何命令后,需要立即提取退出/返回代码

因此,请使用:

Exiting
0
1

由于您的代码在
expect
调用之后立即执行
echo
,因此
$?
将为您提供
echo
的退出状态,而不是
expect
命令。

我想您已经理解了这一点,但是执行显式
exit 1
当然会始终为您提供退出/返回值
1
。此外,如果脚本的结尾没有exit/return语句,那么它的返回值将与上次执行的命令/函数的返回值相同。
VAR=$(expect -c 'puts "Exiting"; exit 1;')
RETURN_CODE=$?
echo "$VAR"
echo $RETURN_CODE