可能/如何获取在最后一个命令之前执行的命令的返回代码?

可能/如何获取在最后一个命令之前执行的命令的返回代码?

Linux bash(或其他 shell)。您是否曾因手误将“echo $?”误写成“echo $4”,从而永久无法知道前一个命令的返回码?我经常这样做(这很烦人),所以我想问:bash 和/或 linux 是否有“返回码堆栈”或数组或其他东西来保存前一个命令的返回码,而不仅仅是您运行的最后一个命令?我说的是简单命令,不涉及管道。

答案1

如果您想查看交互式 bash 的返回代码,您可以像这样使用 PROMPT_COMMAND 变量:

    PROMPT_COMMAND='RC=$?; 
    if [ $RC -ge 128 ]; then
        SIG=$[RC-128];
        echo -e "Signal $SIG = $(kill -l $SIG)";
    fi;
    if [ $RC -ne 0 ]; 
        then echo -n "! (RC=$RC)  "; 
    fi'

此变量中的命令在每个命令之后执行。它应该只包含 bash 内部命令。在我的示例中,如果它不为 0,则显示 $?;如果前一个命令被信号终止,则显示信号。

相关内容