Você provavelmente está enganado sobre o significado genuíno de set -e
. Uma leitura cuidadosa da saída de help set
mostra:
-e Exit immediately if a command exits with a non-zero status.
Portanto, -e
é sobre o status de saída de comandos sendo diferentes de zero, não sobre erros de sintaxe em seu script.
Em geral, considera-se má prática usar set -e
, porque todos os erros (ou seja, todos os retornos diferentes de zero dos comandos) devem ser inteligentemente manipulados pelo script (pense em scripts robustos, não aqueles você digita um nome de arquivo com um espaço ou que começa com um hypen).
Dependendo do tipo de erro de sintaxe, o script pode nem ser executado. Eu não tenho conhecimento suficiente no bash para dizer exatamente qual classe de erros de sintaxe (se apenas eles podem ser classificados) pode levar a um aborto imediato do script ou não. Talvez alguns gurus Bash se juntem e esclareçam tudo.
Espero apenas ter esclarecido a declaração set -e
!
Sobre o seu desejo:
I expected such safe behavior from a sensible programming language... perhaps this must be reported as a bug/wish to bash developers
A resposta é definitivamente não! como o que você observou ( set -e
não está respondendo como você está esperando) é de fato muito bem documentado.