Was bedeutet der Rückgabewert 127 von $? in UNIX.
Antworten
Zu viele Anzeigen?Auch dieser Irrtum ist bisweilen trügerisch. Er besagt, dass die Datei nicht gefunden wurde, obwohl die Datei tatsächlich vorhanden ist. Es könnte an ungültigen, nicht lesbaren Sonderzeichen in den Dateien liegen, die durch den von Ihnen verwendeten Editor verursacht werden könnten. Dieser Link könnte Ihnen in solchen Fällen helfen.
-bash: ./my_script: /bin/bash^M: schlechter Interpreter: Keine solche Datei oder Verzeichnis
Der beste Weg, um herauszufinden, ob es sich um dieses Problem handelt, ist, einfach eine echo-Anweisung in die gesamte Datei einzufügen und zu überprüfen, ob derselbe Fehler auftritt.
Zusätzlich zu den gegebenen Antworten ist zu beachten, dass die Ausführung einer Skriptdatei mit falschen Zeilenendezeichen auch zu folgenden Ergebnissen führen kann 127
Exit-Code, wenn Sie /bin/sh
als Ihre Hülle.
Wenn Sie beispielsweise ein Shell-Skript mit CRLF-Zeilenendezeichen in einem UNIX-basierten System ausführen und in der /bin/sh
Shell kann es zu Fehlern wie dem folgenden kommen, den ich nach der Ausführung meines Skripts namens my_test.sh
:
$ ./my_test.sh
sh: 2: ./my_test.sh: not found
$ echo $?
127
Als Anmerkung: Die Verwendung von /bin/bash
habe ich 126
Exit-Code, der im Einklang steht mit gnu.org Dokumentation über die bash
:
Wenn ein Befehl nicht gefunden wird, gibt der Kindprozess, der zur Ausführung des Befehls erstellt wurde, einen Status von
127
. Wenn ein Befehl gefunden wird, aber nicht ausführbar ist, lautet der Rückgabestatus126
.
Schließlich ist hier das Ergebnis der Ausführung meines Skripts in /bin/bash
:
arman@Debian-1100:~$ ./my_test.sh
-bash: ./my_test.sh: /bin/bash^M: bad interpreter: No such file or directory
arman@Debian-1100:~$ echo $?
126
- See previous answers
- Weitere Antworten anzeigen