Bash 5.2.15 aqui.
Executando o script a seguir, espero que o echo não seja executado.
#!/bin/bash
set -e
function func() {
(
exit 1
)
echo 'should not be run because of set -e'
}
func || true
Na verdade, é executado, o que me parece um bug.
Ele não será executado (corretamente) se eu remover o || true
no site da chamada de função.
Minha interpretação é que o "erro de engolir" || true
é aplicado na parte errada do código: é como se eu tivesse escrito certo na mesma linha do parêntese de fechamento do subshell (mas não o fiz).
Estou esquecendo de algo?