Назад | Перейти на главную страницу

возможно / как получить код возврата для команды, выполненной до последней команды?

Linux bash (или другая оболочка). Вы когда-нибудь толстыми пальцами набирали "echo $"? во что-то вроде "echo $ 4", что навсегда мешает вам узнать код возврата для предыдущей команды? Я делаю это часто (и это так раздражает), поэтому я подумал, что спрошу: есть ли в bash и / или linux «стек кодов возврата» или массив или что-то, что содержит коды возврата из предыдущих команд, а не только из последней что ты сбежал? Я говорю о простых командах, не использующих каналы.

Если вы хотите увидеть коды возврата для интерактивного 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, и сигнал, если предыдущая команда была прервана сигналом.