GNU/Linux >> Znalost Linux >  >> Linux

Jak ukončit, pokud příkaz selhal?

Ostatní odpovědi dobře pokryly přímou otázku, ale možná vás bude zajímat i použití set -e . S tím, jakýkoli příkaz, který selže (mimo konkrétní kontexty jako if testy) způsobí přerušení skriptu. Pro určité skripty je to velmi užitečné.


Zkuste:

my_command || { echo 'my_command failed' ; exit 1; }

Čtyři změny:

  • Změňte && do ||
  • Použijte { } místo ( )
  • Představte ; po exit a
  • mezery za { a před }

Protože chcete zprávu vytisknout a ukončit pouze v případě, že příkaz selže (ukončí se s nenulovou hodnotou), potřebujete || ne && .

cmd1 && cmd2

poběží cmd2 když cmd1 uspěje (hodnota ukončení 0 ). Kde jako

cmd1 || cmd2

poběží cmd2 když cmd1 selže (hodnota výstupu je nenulová).

Pomocí ( ) způsobí, že příkaz uvnitř nich bude spuštěn v sub-shell a volání exit odtud způsobí, že opustíte sub-shell a ne váš původní shell, takže provádění pokračuje ve vašem původním shellu.

K překonání tohoto problému použijte { }

Poslední dvě změny vyžaduje bash.


Linux
  1. Jak přejmenovat soubory v Linuxu

  2. Jak používat Su Command v Linuxu

  3. Jak naplánovat příkaz Rsync?

  1. chyba:příkaz 'gcc' selhal se stavem ukončení 1 na CentOS

  2. Jak ukončím připojení SSH?

  3. Jak zajistit, aby Zsh neukládal neúspěšný příkaz

  1. Jak funguje příkaz Exit na Unixovém terminálu?

  2. `$?` ? Je to proměnná?

  3. Jak opustit kontejner Docker