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

Tom*_*zyk 2 bash expect return-value

看看以下示例:

#!/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;
Run Code Online (Sandbox Code Playgroud)

该脚本的输出将是:

Exiting
0
1
Run Code Online (Sandbox Code Playgroud)

我的猜测是,第一个0是"echo"的返回码.我对吗?如果是这样,那么如何捕获expect命令的返回码?

anu*_*ava 6

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

所以使用:

VAR=$(expect -c 'puts "Exiting"; exit 1;')
RETURN_CODE=$?
echo "$VAR"
echo $RETURN_CODE
Run Code Online (Sandbox Code Playgroud)

由于您的代码echoexpect调用后正在执行,因此$?为您提供退出状态echo而不是expect命令.