set -e in Bash-Skripten

Nilesh Katuwal 30 Januar 2023
  1. Verwendung von set -e außerhalb des Funktionskörpers in Bash
  2. Verwenden von set -e im Funktionskörper in Bash
set -e in Bash-Skripten

Wenn der Befehl einen Exit-Status ungleich Null zurückgibt, weist die Option set -e die Shell an, sich zu beenden. Einfach ausgedrückt beendet sich die Shell, wenn ein Befehl fehlschlägt.

In Debian-Paketverwaltungsskripten ist set -e auch als set -o errexit bekannt. Gemäß der Debian-Richtlinie ist die Verwendung dieser Option in bestimmten Skripten erforderlich; Das Ziel scheint darin zu bestehen, jegliche Möglichkeit eines unbehandelten Fehlerszenarios zu vermeiden.

In Wirklichkeit bedeutet dies, dass Sie die Situationen verstehen müssen, in denen die von Ihnen ausgeführten Befehle möglicherweise einen Fehler zurückgeben, und jedes dieser Probleme explizit ansprechen.

Verwendung von set -e außerhalb des Funktionskörpers in Bash

Lassen Sie uns ein Bash-Skript schreiben, um Hello World mit der Funktion hello_world zu drucken. Wir verwenden set -e ausserhalb der Funktion.

set -e wird nur verwendet, um einen Fehleranzeigecode zu schreiben oder zu setzen.

#!/bin/bash
set -e
function hello_world()
{
echo "Hello World!"
}
hello_world

Ausgabe:

Hello World!

Verwenden von set -e im Funktionskörper in Bash

Jetzt fügen wir set -e in die Funktion im obigen Skript ein.

#!/bin/bash
function hello_world()
{
set -e
echo "Hello World!"
}
hello_world

Ausgabe:

Hello World!

Die Verwendung von set-e innerhalb oder außerhalb einer Funktion hat keinen Einfluss auf unsere Ausgabe.

set -e Mit trap

Der Befehl set -e weist das Terminal an, eine Ausnahme auszulösen, wenn es einen Fehler erkennt, wodurch die Ausführung des Codes angehalten wird. Mit dem Schlüsselwort trap können Sie die eingebaute Funktion ERR verwenden, die die Fehlerzeilennummer akzeptiert und an die Fehlerfunktion weiterleitet.

Schauen wir uns ein Beispiel an.

#!/bin/bash
set -e
function error()
{
echo "error at $1"
}
trap 'error $LINENO' ERR

errors

Wir haben eine Funktion error erstellt und die Shell-Variable $1 verwendet, um die Zeilennummer zu speichern, in der der Fehler auftritt.

Ausgabe:

demo.sh: line 9: errors: command not found
error at 9

demo.sh ist der Name der Skriptdatei, die das obige Skript enthält.

Wenn eine Zeile eines Skripts fehlschlägt, aber die letzte Zeile erfolgreich ist, wird das Skript als Ganzes als erfolgreich angesehen. Infolgedessen ist es ziemlich einfach, den Fehler zu übersehen.

Fehlerintolerant zu sein ist in Skripten viel besser, und set -e bietet Ihnen das.