GNU/Linux >> Znalost Linux >  >> Linux

Bash Exit Command a Exit Codes

Při psaní skriptů Bash budete často muset skript ukončit, když je splněna určitá podmínka, nebo provést akci na základě ukončovacího kódu příkazu.

V tomto článku se budeme zabývat exit Bash vestavěný příkaz a stavy ukončení prováděných příkazů.

Stav ukončení #

Každý příkaz shellu vrátí kód ukončení, když je ukončen, ať už úspěšně nebo neúspěšně.

Podle konvence návratový kód nula znamená, že příkaz byl úspěšně dokončen, a nenulový znamená, že došlo k chybě.

Speciální proměnná $? vrátí stav ukončení posledního provedeného příkazu:

date &> /dev/nullecho $?

date příkaz byl úspěšně dokončen a kód ukončení je nula:

0

Pokud se pokusíte spustit ls v neexistujícím adresáři bude výstupní kód nenulový:

ls /nonexisting_dir &> /dev/nullecho $?
2

Stavový kód lze použít ke zjištění, proč příkaz selhal. Manuálová stránka každého příkazu obsahuje informace o výstupních kódech.

Při provádění kanálu s více příkazy je výstupní stav kanálu stejný jako u posledního příkazu:

sudo tcpdump -n -l | tee file.outecho $?

Ve výše uvedeném příkladu echo $? vytiskne výstupní kód tee příkaz.

Bash exit příkaz #

exit příkaz opustí shell se stavem N . Má následující syntaxi:

exit N

Pokud N není zadán, kód stavu ukončení odpovídá poslednímu provedenému příkazu.

Při použití ve skriptech shellu je hodnota zadaná jako argument pro exit příkaz se vrátí do shellu jako výstupní kód.

Příklady #

Stav ukončení příkazů lze použít v podmíněných příkazech, jako je if . V následujícím příkladu grep ukončí se s nulou (což ve skriptování shellu znamená true), pokud je v filename nalezen „vyhledávací řetězec“ :

if grep -q "search-string" filename then
  echo "String found."
else
  echo "String not found."
fi

Při spuštění seznamu příkazů oddělených && (AND) nebo || (NEBO), stav ukončení příkazu určuje, zda bude proveden další příkaz v seznamu. Zde je mkdir příkaz bude proveden pouze v případě, že cd vrátí nulu:

cd /opt/code && mkdir project

Pokud skript končí exit bez zadání parametru je kód ukončení skriptu kódem posledního příkazu provedeného ve skriptu.

~/script.sh
#!/bin/bash

echo "doing stuff..."

exit

Stačí použít exit je stejný jako exit $? nebo vynecháním exit .

Zde je příklad ukazující, jak ukončit skript, pokud je vyvolán uživatelem bez oprávnění root:

#!/bin/bash

if [[ "$(whoami)" != root ]]; then
  echo "Only user root can run this script."
  exit 1
fi

echo "doing stuff..."

exit 0

Pokud skript spustíte jako uživatel root, bude výstupní kód nula. V opačném případě se skript ukončí se stavem 1 .

Závěr č.

Každý příkaz shellu po svém ukončení vrátí kód ukončení. exit příkaz se používá k ukončení shellu s daným stavem.

Pokud máte nějaké dotazy nebo zpětnou vazbu, neváhejte zanechat komentář.


Linux
  1. Rozdíl mezi operátory Bash [[ Vs [ Vs ( Vs ((?

  2. eval příkaz v Bash a jeho typické použití

  3. Výstupní kód přiřazení proměnné k substituci příkazu v Bash

  1. Bash:Smyčka, dokud se stav ukončení příkazu nerovná 0

  2. Bash - příkaz Datum a mezera

  3. Jaký je rozdíl mezi &> a >&v bash?

  1. Ukončovací kódy příkazového řádku Bash byly demystifikovány

  2. Rozdíl mezi ‚A‘ na příkazovém řádku (bash)??

  3. Co jsou výstupní kódy Bash v Linuxu