Comandos na sua função de comando de prompt alter PIPESTATUS
, bash
salva e restaura PIPESTATUS
(e $?
) após o comando de prompt, consulte a descrição do comportamento pretendido aqui .
O truque é salvar $PIPESTATUS[]
(e / ou $?
) na primeira instrução da sua função, depois disso os valores originais são sobrescritos.
function myprompt() {
_pipestatus=( "${PIPESTATUS[@]}" )
echo "current: ${PIPESTATUS[@]}"
echo "cached : ${_pipestatus[@]}"
}
PROMPT_COMMAND=myprompt
então:
$ true | false | true
current: 0
cached : 0 1 0
Eu faço algo semelhante ao que você descreveu, mas dentro de uma função de manipulador de traps para ERR
em vez de um comando prompt.