'set -e' dentro de uma função bash

1

O set -e se comporta de maneira diferente aqui

set -e;

function foo {

}

vs.

function foo {
  set -e;

}

set -e pertence a funções internas? O set -e declarado fora das funções afeta as funções "aninhadas" dentro de um arquivo shell? E o inverso? Devemos chamar local set -e lol?

    
por Alexander Mills 18.11.2017 / 02:32

1 resposta

4

Observação: as instruções aqui se aplicam à versão 4.0.35 e posterior do Bash. As implementações de set -e variam muito entre diferentes shells / versões . Siga o conselho de Stéphane e não use set -e .

man bash na seção Comandos internos do shell / set explica muito bem as coisas, embora o texto seja um pouco denso e exija um pouco de foco. Para suas perguntas específicas, as respostas são:

  • O set -e se comporta diferente aqui ... vs .. - Depende do que você quer dizer com "diferente", mas suspeito que você consideraria a resposta "não" ... não há um escopo complicado regras. Ele age de forma bastante linear.
  • Set -e pertence dentro de funções? - Perfeitamente válido.
  • Set -e declarado fora das funções, afeta as funções "aninhadas" dentro de um arquivo shell? - Sim
  • E quanto ao inverso? - set -e em uma função e depois encontra um status diferente de zero após o retorno? Sim, isso vai sair.
por 18.11.2017 / 11:51