Как проверить эквивалент PIPESTATUS во время выполнения PROMPT_COMMAND?

У меня есть пользовательское $PROMPT_COMMAND в ударе, который регистрирует последнюю выполняемую команду и ее код возврата. Я использовал $? для последнего счастливо, пока я не понял, что для переданных по каналу команд это было недостаточно. Я думал, что зарегистрируюсь ${PIPESTATUS[@]} вместо этого.

К сожалению, $PIPESTATUS кажется, установлен после вызова $PROMPT_COMMAND. Есть ли любой обман, который я могу использовать для доступа к этой информации во время выполнения $PROMPT_COMMAND?

1
22.10.2014, 17:50
1 ответ

Ммм, возможно, это зависит еще и от версии bash.

Давайте попробуем выполнить это простое назначение в конфигурации вашего профиля bash:

export PROMPT_COMMAND="echo status=$?"

Баш 4.1.2 работает нормально. В командной строке bash я набираю несуществующую -команду:

status=127

bash 3.2.25 всегда печатает

status=0

В строке команды -проверяю переменную

echo $PROMPT_COMMAND

На рабочем хосте соответствует моему назначению. На другом хосте его значение равно

.

history -a;history -n;echo status=$?

Для чего нужны эти команды? Являются ли они причиной проблемы?

0
20.04.2020, 13:31

Теги

Похожие вопросы