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
-edeve ser ignorada ao executar o composto lista após a palavra reservadawhile,until,ifouelif, 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
-eera sendo ignorado, então-enã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