So beenden Sie das Bash-Skript
Wenn Sie ein Bash-Skript schreiben oder auch nur ausführen, müssen Sie unbedingt wissen, wie Sie ein Bash-Skript beenden.
Es gibt Tastaturkombinationen, die ein Bash-Skript beenden können, während es in Ihrem Terminal ausgeführt wird, und es gibt Möglichkeiten, ein Bash-Skript mit verschiedenen Exit-Codes zu beenden. Wir zeigen Ihnen Beispiele für beides.
In diesem Tutorial erfahren Sie, wie Sie ein Bash-Skript entweder aus dem Skript heraus oder über die Befehlszeile beenden, während das Skript auf einem Linux-System ausgeführt wird.
In diesem Tutorial lernen Sie:
- So beenden Sie ein Bash-Skript im Terminal
- So beenden Sie ein Bash-Skript innerhalb des Skripts
- So verwenden Sie verschiedene Exit-Codes innerhalb eines Bash-Skripts
So beenden Sie ein Bash-Skript im Terminal
Wenn Sie ein Bash-Skript in Ihrem Terminal ausführen und es stoppen müssen, bevor es von selbst beendet wird, können Sie die Kombination Strg + C auf Ihrer Tastatur verwenden. Ein ^C-Zeichen wird in Ihrem Terminal angezeigt, um einen Tastaturinterrupt anzuzeigen.
./test.sh
^C
Dadurch wird ein SIGINT-Interrupt-Signal an das Skript gesendet, das in 99 % der Fälle sofort das Skript beenden sollte, das Sie gerade ausführen.
Die einzige Ausnahme ist, wenn eine Falle eingerichtet wurde, um das SIGINT-Signal zu empfangen. Dies ist bei Skripten der Fall, die eine bestimmte Aufgabe abschließen müssen, auch wenn der Benutzer das Skript dringend vorzeitig beenden möchte. In diesem Fall sollten Sie wahrscheinlich einfach warten, bis das Skript abgeschlossen ist.
Lesen Sie mehr über Bash-Traps in unserem anderen Tutorial zum Ändern des Skriptverhaltens bei Signalen mithilfe von Bash-Traps.
Im schlimmsten Fall können Sie das Skript manuell mit dem Befehl kill beenden. Sehen Sie sich unser anderes Tutorial zum Beenden eines laufenden Prozesses unter Linux an.
So beenden Sie ein Bash-Skript innerhalb des Skripts
Natürlich wird ein Bash-Skript beendet, wenn es das Ende des Skripts erreicht. Aber manchmal ist das Skript nicht dafür gedacht, es bis zum Ende zu schaffen, wie z. B. im Fall einer bedingten Anweisung.
Der Exit-Befehl kann in ein Bash-Skript geschrieben werden, um ihn an einem bestimmten Punkt manuell zu beenden. Der Exit-Code 0 gibt in der Regel an, dass das Skript ohne Fehler beendet wurde. Ein Exit-Code von 1 oder höher zeigt in der Regel an, dass beim Beenden ein Fehler aufgetreten ist. Es liegt jedoch im Ermessen des Entwicklers, zu entscheiden, was diese Codes in seinem Skript bedeuten sollen.
Schauen wir uns einige Beispiele an.
Hier ist ein einfaches Skript, das nur
beendetwird, wenn die erste Klausel derif-Anweisungwahr ist.#!/bin/bash while true; do echo "enter some text" read text if [[ -n $text ]]; then echo "you entered: $text" exit 0 else echo "you didn't enter anything!" fi doneZuerst fordern wir den Benutzer auf, Text einzugeben. Dann testet
unsere if-Anweisung, ob die Zeichenfolge Text enthält oder leer ist. Wenn es Text enthält, gibt das Skript die eingegebene Zeichenfolgezurückundbeendetdann das Skript. Wenn der Benutzer nichts eingibt, wird diewhile-Schleifeweiter ausgeführt und er wird so lange aufgefordert, bis eine Zeichenfolge eingegeben wird. So sieht es aus, wenn wir das Skript ausführen:./test.sh enter some text hello you entered: helloJetzt können wir den folgenden Befehl ausführen, um zu sehen, mit welchem Exit-Code unser Skript beendet wurde.
echo $? 0Wie beabsichtigt haben wir einen Exit-Code von
0. Beachten Sie, dass wir in unserem Skript auch einfachexitanstelle vonexit 0verwenden können. Beide werden mit dem Code0beendet.Nachdem Sie nun eine Vorstellung davon haben, wie Exit-Codes funktionieren, schauen wir uns ein praktischeres Beispiel an. Das folgende Skript wird mit dem Code
1beendet, wenn der Benutzer beim Ausführen des Skripts als root angemeldet ist. Wenn sie als normaler Benutzer angemeldet sind, fährt das Skript mit seinen Funktionen fort und wird dann mit dem Code0beendet.#!/bin/bash user=$(whoami) if [ $user = root ]; then echo "Don't execute the script as root" exit 1 fi do some stuff echo "All done..." exit 0Schauen wir uns an, was passiert, wenn wir das Skript mit oder ohne Root-Rechte ausführen.
./test.sh All done... echo $? 0 sudo ./test.sh Don't execute the script as root echo $? 1
Abschließende Gedanken
In diesem Tutorial haben Sie gelernt, wie Sie ein Bash-Skript auf einem Linux-System beenden. Dazu gehörte das Beenden des Skripts, während es im Terminal ausgeführt wird, und das Beenden aus einem Bash-Skript, das Sie gerade schreiben. Sie haben auch gesehen, wie man Exit-Codes verwendet, mit denen wir angeben können, ob das Skript erfolgreich oder aufgrund eines Fehlers usw. beendet wurde.
