Adicione set -e
no início do script ou altere a linha #!
para #!/bin/sh -e
, o que terá o mesmo efeito.
Isso define a opção errexit
shell, o que significa que o script sairá assim que um comando estiver retornando um status de saída diferente de zero, com as seguintes exceções (retiradas de a descrição POSIX de set
):
-
A falha de qualquer comando individual em um multi-comando a tubulação não fará com que o shell saia. Apenas o fracasso do próprio gasoduto deve ser considerado.
-
A configuração
-e
deve ser ignorada ao executar o composto lista após a palavra reservadawhile
,until
,if
ouelif
, uma pipeline começando com a palavra!
reservada ou qualquer comando de uma lista AND-OR diferente da última. -
Se o status de saída de um comando composto diferente de um O comando subshell foi o resultado de uma falha enquanto
-e
era sendo ignorado, então-e
não se aplicará a este comando.
Uma alternativa é adicionar || exit
após cada comando que você deseja sair depois, se eles falharem. Por exemplo
flash_eraseall -j /dev/mtd2 || exit