In unserem Bash-Einführungsartikel haben wir gelernt, dass eine Shell-Skriptdatei eine Liste von Befehlen enthält, die vom Shell-Interpreter ausgeführt werden sollen. Lassen Sie uns in diesem Artikel einen Rückblick auf Shell-Befehle und ihre Interna geben.
Ein Befehl ist eine Folge von Wörtern. Das erste Wort gibt den auszuführenden Befehl an und die restlichen Wörter werden als Argumente übergeben, wobei Argumente die Optionen oder Parameter des Befehls sein können.
Einige der gebräuchlichen Unix-Befehle, die Sie auf der Befehlszeile ausführen sind Shell-Befehle. Zum Beispiel die Befehle ls, lpr und grep.
$ ls -alF $ lpr filename $ grep "string" filename
Shell-Befehlsausgangsstatus
Der Rückgabewert eines Befehls ist sein Exit-Status oder 128 + N, wenn der Befehl durch das Signal N beendet wird. Der Exit-Status wird verwendet, um das Ergebnis (Erfolg/Fehler) der Ausführung des Befehls zu überprüfen. Wenn der Exit-Status Null ist, ist der Befehl erfolgreich. Wenn der Befehl fehlschlägt, ist der Exit-Status ungleich Null.
Ausgangswert | Exit-Status |
---|---|
0 (Null) | Erfolg |
Nicht null | Fehler |
2 | Falsche Verwendung |
127 | Befehl nicht gefunden |
126 | Keine ausführbare Datei |
$? Shell-Variable
Der Shell-Variablenname $? ist eine spezielle eingebaute Variable, die den Exit-Status des zuletzt ausgeführten Befehls enthält.
- Nach der Ausführung der Shell-Funktion wird $? gibt den Exit-Status des letzten in einer Funktion ausgeführten Befehls zurück.
- Nach der Ausführung des Shell-Skripts wird $? gibt den Exit-Status des letzten im Skript ausgeführten Befehls zurück.
Beispiel-Shell-Skript, das den Exit-Status von Shell-Befehlen erklärt
Das folgende Shell-Skript exitstatus.sh zeigt Beispiele für verschiedene Exit-Status von Shell-Befehlen.
$ cat exitstatus.sh #! /bin/bash echo -e "Successful execution" echo -e "=====================" echo "hello world" # Exit status returns 0, because the above command is a success. echo "Exit status" $? echo -e "Incorrect usage" echo -e "=====================" ls --option # Incorrect usage, so exit status will be 2. echo "Exit status" $? echo -e "Command Not found" echo -e "=====================" bashscript # Exit status returns 127, because bashscript command not found echo "Exit status" $? echo -e "Command is not an executable" echo -e "=============================" ls -l execution.sh ./execution.sh # Exit status returns 126, because its not an executable. echo "Exit status" $?
Führen Sie nun die obige Datei exitstatus.sh aus, um die verschiedenen Exit-Statuen anzuzeigen, die vom Beispiel-Shell-Skript angegeben werden.
$ bash exitstatus.sh Successful execution ===================== hello world Exit status 0 Incorrect usage ===================== ls: unrecognized option `--option' Try `ls --help' for more information. Exit status 2 Command Not found ===================== exitstaus.sh: line 15: bashscript: command not found Exit status 127 Command is not an executable ============================= -rw-r--r-- 1 root root 659 Mar 9 13:36 execution.sh exitstatus.sh: line 21: ./execution.sh: Permission denied Exit status 126
Hinweis:Die Überprüfung des Rückgabewerts einer Funktion oder eines Befehls gehört zu den Hauptaufgaben eines Programmierers. Dies sollte zu Ihrer zweiten Natur werden, wenn Sie Code schreiben.