Website-Suche

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.

NOTE
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.

  1. Hier ist ein einfaches Skript, das nur beendet wird, wenn die erste Klausel der if-Anweisung wahr 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
    
    done

    Zuerst 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 Zeichenfolge zurück und beendet dann das Skript. Wenn der Benutzer nichts eingibt, wird die while-Schleife weiter 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: hello
    

    Jetzt können wir den folgenden Befehl ausführen, um zu sehen, mit welchem Exit-Code unser Skript beendet wurde.

    
    echo $?
    0
    

    Wie beabsichtigt haben wir einen Exit-Code von 0. Beachten Sie, dass wir in unserem Skript auch einfach exit anstelle von exit 0 verwenden können. Beide werden mit dem Code 0 beendet.

  2. 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 1 beendet, 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 Code 0 beendet.

    #!/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 0

    Schauen 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.

Verwandte Artikel: