In Bash, se un comando fallisce, eseguire un altro comando

In Bash, se un comando fallisce, eseguire un altro comando
Sapevi che ogni comando che esegui in Linux ha un codice di uscita? Questo è vero anche se un comando termina con un errore. I valori di uscita sono valori interi che vanno da 0 a 255. Un valore diverso da zero, i.e., Un valore superiore a 0, indica che il comando esce con un errore.

Se un comando esegue correttamente in bash, ha un codice di uscita 0. Per il comando non trovato, il codice di uscita è 127. Pertanto, possiamo utilizzare il codice di uscita per eseguire un'azione specifica.

Questo tutorial ti darà alcuni suggerimenti e trucchi che puoi utilizzare per eseguire un'azione basata sul codice di uscita del comando precedente.

Utilizzando l'operatore o

Un modo per eseguire un comando se il comando precedente fallisce è utilizzare l'operatore. Poiché un o operatore richiede solo una condizione per essere vera, possiamo eseguire la seguente sintassi:

$ Command1 || Commad2

Nella sintassi sopra, il secondo comando eseguirà anche se il primo comando fallisce. Si noti che questo è diverso dall'uso dell'operatore in quanto richiede il primo comando da eseguire correttamente.

Per esempio:

$ ping -c lhint || eco "successo";

Nell'esempio sopra, Echo sarà comunque eseguito nonostante l'errore causato dalla risoluzione del nome nel comando ping.

Ecco uno screenshot che illustra questo:

NOTA: È possibile legare più comandi utilizzando gli operatori bash per ottenere il miglior risultato. Ad esempio, puoi consentire il sonno per eseguire solo se il ping ed eco eseguono correttamente.

$ ping -c 1 linuxhint.com && echo "successo" || sonno 100;

Nell'esempio sopra, se il ping o l'eco falliscono, il sonno non esegue.

In questo modo può essere utile se il seguente comando si basa sull'output dal comando precedente.

Utilizzando il codice di uscita

Bash ci consente di ottenere il codice di uscita del comando precedentemente eseguito. Per visualizzare il codice di uscita, immettere il comando:

$ echo $?

Otteniamo 0 per un comando eseguito correttamente e 127 per un comando non trovato nell'esempio sopra.

Per utilizzare il codice di uscita per un'azione, facciamo:

#!/Bin/Bash
Se [[$? -EQ 0]];
Poi
Echo "successo"
altro:
Echo "Fail"
fi

Nello script sopra, controlliamo se il codice di uscita è uguale a 0, indicando il comando eseguito correttamente. Se vero, eseguire un comando. In questo caso, eco "successo."Altrimenti, eco" fallisci."

Conclusione

In questo rapido tutorial, abbiamo usato gli operatori bash e i codici di uscita per eseguire un comando se il comando precedente non riesce o ha successo.