Bash: Execute um executável com um bom status de saída

32

Desejo executar um executável no Linux e, independentemente do status de saída que ele retornar, desejo retornar um bom status de saída. (ou seja, nenhum erro.)

(Isso ocorre porque estou usando sh -exe quero que o script continue em execução, mesmo que um comando (específico) falhe.)

Ram Rachum
fonte

Respostas:

47

Faça uma tentativa:

command || true

De man bash:

O shell não será encerrado se o comando que falhar fizer parte da lista de comandos imediatamente após uma palavra-chave while ou while, parte do teste após as palavras reservadas if ou elif, parte de qualquer comando executado em uma lista && ou except, exceto o comando após o final && ou ⎪⎪, qualquer comando em um pipeline, exceto o último, ou se o valor de retorno do comando estiver sendo invertido com!

Pausado até novo aviso.
fonte
Também um bom :)
voretaq7
1

Tente (executable ; exit 0)ou envolva-o em um script de shell que sempre sai de 0.

voretaq7
fonte
1
Isso funciona bem na maioria dos casos, mas configura um subshell; portanto, se, por exemplo, (cd foo; exit 0)for bem-sucedido, você não terminará em "foo" depois, pois seu cwd retornará ao que estava anteriormente. No entanto, cd foo || truevocê será deixado em "foo" se for bem-sucedido.
Pausado até novo aviso.
ponto positivo - se o seu processo tiver efeitos colaterais adicionais (configuração de variáveis ​​de ambiente, alteração de diretórios etc.), isso não funcionará.
voretaq7