Ich habe ein in Python geschriebenes Framework und möchte zu Testzwecken grundsätzlich einen Unterprozess (auch bekannt als Shell-Aufruf) ausführen ... der einfach mit einem RC! = 0 zurückkommen sollte. Ich habe versucht, eine nicht vorhandene ausführbare Datei aufzurufen. oder um "exit 1" auszuführen; Diese werden jedoch aus irgendeinem Grund in einen FileNotFoundError übersetzt.
Was könnte ich also noch tun, um einen Rückkehrcode auszulösen? = 0 (auf "zuverlässige" Weise; dh der Befehl sollte zu einem späteren Zeitpunkt nicht plötzlich 0 zurückgeben).
Ich dachte nach einer Binärdatei namens exit zu suchen, aber gut:
> /usr/bin/env exit
/usr/bin/env: exit: No such file or directory
command-line
bash
python
scripts
GhostCat begrüßt Monica C.
quelle
quelle
exit 1
ist der zukunftssichere Weg. Der FileNotFoundError muss durch etwas anderes verursacht werden./bin/false
?Antworten:
Wenn Sie nach einem Systembefehl suchen , der immer einen Exit-Code ungleich Null zurückgibt,
/bin/false
sollte er für Sie funktionieren. Vonman false
:quelle
/bin/false 5; echo $?
5
) ignoriertSie können mit dem Befehl einen neuen Rückkehrcode erstellen
bash -c "exit RETURNCODE"
und "RETURNCODE" durch eine beliebige Nummer ersetzen. Beachten Sie, dass es von (RETURNCODE mod 256) auf eine 8-Bit-Ganzzahl ohne Vorzeichen (0 ... 255) gekürzt wird.Sie können den Rückkehrcode des letzten Shell-Befehls im Terminal (!) Mit der Ausführung überprüfen
echo $?
. Das "$?" Variable enthält den neuesten Rückkehrcode und "echo" druckt ihn in die Standardausgabe.quelle
exit RETURNCODE
(ohne denbash -c
Teil) tun könnenNach einigen weiteren Tests stellte ich fest, dass mein Problem nicht auf der "Linux" -Seite lag.
Python hat einen Modul-Shlex; Dies sollte verwendet werden, um Befehlszeichenfolgen zu "teilen". Wenn ich meinen Unterprozessaufruf geändert habe, um die Ausgabe des
shlex.split()
Aufrufs von "bash exit 1" zu verwenden, bekomme ich das, was ich brauche.quelle