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.)

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!


Também um bom :)
voretaq7

1

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


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.