Tengo un marco escrito en python, y para propósitos de prueba básicamente quiero hacer un subproceso (también conocido como llamada de shell) ... que simplemente debería volver con un RC! = 0. Traté de invocar algún ejecutable no existente; o para ejecutar "salida 1"; pero esos son por alguna razón traducidos a un FileNotFoundError.
Entonces, ¿qué más podría hacer para activar un código de retorno! = 0 (de manera "confiable"; lo que significa que el comando no debería devolver 0 de repente en un momento futuro).
Pensé en "buscar" un binario llamado exit, pero bueno:
> /usr/bin/env exit
/usr/bin/env: exit: No such file or directory
command-line
bash
python
scripts
GhostCat
fuente
fuente
exit 1
es el camino a seguir para el futuro. FileNotFoundError debe ser causado por otra cosa./bin/false
?Respuestas:
Si está buscando un comando del sistema que siempre devuelva un código de salida distinto de cero,
/bin/false
parece que debería funcionar para usted. Deman false
:fuente
/bin/false 5; echo $?
5
) se ignoranPuede crear un nuevo código de retorno con el comando
bash -c "exit RETURNCODE"
, reemplazando "RETURNCODE" con cualquier número. Tenga en cuenta que se recortará a un entero sin signo de 8 bits (0 ... 255) mediante (RETURNCODE mod 256)Puede verificar el código de retorno del último comando de shell dentro del terminal (!) Con la ejecución
echo $?
. El "$?" La variable contiene el código de retorno más reciente y "echo" lo imprime en la salida estándar.fuente
exit RETURNCODE
(sin labash -c
parte)Después de algunas pruebas más, descubrí que mi problema no estaba en el lado de "Linux".
Python tiene un módulo shlex; que debe usarse para "dividir" cadenas de comandos. Cuando cambié mi llamada de subproceso para usar la salida de
shlex.split()
invocar "bash exit 1" me da lo que necesito.fuente