Por favor, observe:
mark@L-R910LPKW:~$ f(){ set -euo pipefail ; git statu; echo $?; } && f && echo OK ; set +euo pipefail
git: 'statu' is not a git command. See 'git --help'.
The most similar commands are
status
stage
stash
1
OK
mark@L-R910LPKW:~$
O comando éf(){ set -euo pipefail ; git statu; echo $?; } && f && echo OK ; set +euo pipefail
Minha pergunta é: por que a função f
NÃO é abortada logo após falhar na execução git statu
? A execução do comando mostra claramente que git statu
falhou com o código de saída 1, mas ainda prossegue em echo $?
vez de abortar conforme solicitado por set -e
.
Isso está bem documentado no manual :
Sua função é abortada em um contexto onde
-e
não é ignorada. Por exemplo: