Como você sairia de uma função se uma condição fosse verdadeira sem matar todo o script, basta retornar para antes de chamar a função.
Exemplo
# Start script
Do scripty stuff here
Ok now lets call FUNCT
FUNCT
Here is A to come back to
function FUNCT {
if [ blah is false ]; then
exit the function and go up to A
else
keep running the function
fi
}
set -e
definiu no topo do seu script e seureturn 1
ou qualquer outro número além de 0, todo o seu script será encerrado.||
, é possível retornar um código diferente de zero e ainda fazer com que o script continue a ser executado.set -e
e retornar valores diferentes de zero, pois isso me pegou de surpresa no passado.return
Operador de uso :fonte
Se você quiser retornar de uma função externa com um erro sem
exit
fazer isso, use este truque:Experimentando:
Isso tem a vantagem / desvantagem de ser opcionalmente desativado:
__fail_fast=x do-something-complex
.Observe que isso faz com que a função mais externa retorne 1.
fonte
fail
, o que o cólon está fazendo aqui?:
é um operador bash integrado que é "no-op". Ele avalia a expressão, mas não faz nada com ela. Estou usando para fazer a substituição de variáveis que falhará se a variável não for definida, o que obviamente não está.do-something-complex
? <code> checkPara () {if [$ 1 -lt $ 2]; então echo $ 3; fi; } do-something-complex () {checkPara $ # 1 "Alguma mensagem aqui para avisar o usuário como usar a função." echo "yes"} </code> Gostaria dedo-something-complex
mostrar ao usuário alguma mensagem e retornar imediatamente se não houver nenhum parâmetro alimentado para a função.checkPara
usaria minhafail
função para sair de toda a pilha de funções.code
bloco não funciona em comentário sobre stackoverflow). Ele continua correndo atráscheckPara
.