GNU/Linux >> Znalost Linux >  >> Linux

Bash ignoruje chybu pro konkrétní příkaz

Řešení:

particular_script || true

Příklad:

$ 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 nebudou nikdy vytištěny.

Také chci dodat, že když pipefail je zapnuto, stačí, aby si shell myslel, že celá roura má nenulový výstupní kód, když jeden z příkazů v rouře má nenulový výstupní kód (s pipefail off to musí být poslední).

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

Stačí přidat || true za příkazem, kde chcete chybu ignorovat.


Nepřestávejte a také uložte stav ukončení

Pro případ, že chcete, aby se váš skript nezastavil, pokud konkrétní příkaz selže a chcete také uložit chybový kód neúspěšného příkazu:

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

Linux
  1. Účel klíčového slova „dělat“ v Bash For Loops?

  2. Bash Echo Příkazový řádek spuštěn na samotném příkazovém řádku (ne ve skriptu)?

  3. Jak získat dokončování bash pro aliasy příkazů?

  1. Bash tipy pro každý den na příkazovém řádku

  2. příkaz find ve skriptu bash, který má za následek Žádná chyba souboru nebo adresáře pouze pro adresáře?

  3. Blokovat konkrétní příkaz v Linuxu pro konkrétního uživatele

  1. Dvě skvělá použití pro příkaz cp:Bash zkratky

  2. Jak zakázat alias v Bash pro jeden příkaz?

  3. Bash skript:Použití příkazu script z bash skriptu pro protokolování relace