GNU/Linux >> Linux Esercitazione >  >> Linux

Bash che ignora l'errore per un particolare comando

La soluzione:

particular_script || true

Esempio:

$ cat /tmp/1.sh
particular_script()
{
    false
}

set -e

echo one
particular_script || true
echo two
particular_script
echo three

$ bash /tmp/1.sh
one
two

three non verrà mai stampato.

Inoltre, voglio aggiungere che quando pipefail è attivo, è sufficiente che la shell pensi che l'intera pipe abbia un codice di uscita diverso da zero quando uno dei comandi nella pipe ha un codice di uscita diverso da zero (con pipefail deve essere tolto l'ultimo).

$ set -o pipefail
$ false | true ; echo $?
1
$ set +o pipefail
$ false | true ; echo $?
0

Basta aggiungere || true dopo il comando in cui vuoi ignorare l'errore.


Non fermarti e salva anche lo stato di uscita

Nel caso in cui desideri che il tuo script non si fermi se un particolare comando fallisce e vuoi anche salvare il codice di errore del comando fallito:

set -e
EXIT_CODE=0
command || EXIT_CODE=$?
echo $EXIT_CODE

Linux
  1. Suggerimenti Bash per tutti i giorni dalla riga di comando

  2. Bash Echo La riga di comando eseguita sulla riga di comando stessa (non in uno script)?

  3. Come ottenere il completamento di Bash per gli alias di comando?

  4. Perché bash non si ferma in caso di errore per errori nella sequenza di comandi in cortocircuito?

  5. comando find nello script bash risultante in Nessun errore di file o directory solo per le directory?

Comando Bash printf

Esercitazione sui comandi echo Linux per principianti (5 esempi)

Comando Bash Echo spiegato con esempi in Linux

Come utilizzare il comando echo negli script Bash in Linux

Risoluzione dei problemi di errore "Bash:comando non trovato" in Linux

Utilizzo del comando Bash printf per la stampa di output formattati