Bash: esegui un eseguibile con un buono stato di uscita


32

Voglio eseguire un eseguibile in Linux e, indipendentemente dallo stato di uscita che restituisce, voglio restituire un buono stato di uscita. (cioè nessun errore.)

(Questo perché sto usando sh -exe voglio che lo script continui a funzionare anche se un comando (specifico) fallisce.)

Risposte:


47

Prova questo:

command || true

Da man bash:

La shell non si chiude se il comando che fallisce fa parte dell'elenco dei comandi immediatamente dopo un po 'o fino alla parola chiave, parte del test che segue le parole riservate if o elif, parte di qualsiasi comando eseguito in un elenco && o ⎪⎪ ad eccezione del comando dopo l'ultimo && o ⎪⎪, qualsiasi comando in una pipeline tranne l'ultimo, o se il valore di ritorno del comando viene invertito con!.


anche una buona :)
voretaq7,

1

Prova (executable ; exit 0)o in alternativa avvolgilo in uno script shell che esce sempre da 0.


1
Funziona bene per la maggior parte dei casi, ma imposta una subshell quindi se, ad esempio, ha (cd foo; exit 0)successo, non finirai in "pippo" in seguito poiché il tuo CWD viene restituito a quello in cui eri in precedenza. Tuttavia, cd foo || trueti lascerà in "pippo" se ha successo.
In pausa fino a nuovo avviso.

buon punto - se il tuo processo ha effetti collaterali aggiuntivi (impostazione delle variabili d'ambiente, cambio di directory, ecc.) questo non funzionerà.
voretaq7,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.