¿Existe un comando estándar de Unix que haga algo similar a mi ejemplo a continuación?
$ <cmd here> 56
$ echo Return code was $?
Return code was 56
$
<cmd here>
debe ser algo que se pueda ejecutar con fork y deje 56 como código de salida cuando el proceso finalice. Los builtins exit
y return
shell no son adecuados para lo que estoy buscando porque afectan al shell invocador al salir de él. <some cmd>
debería ser algo que pueda ejecutar en contextos que no sean de shell, por ejemplo, invocar desde un script Python con subprocess
.
Por ejemplo, /usr/bin/false
siempre sale inmediatamente con el código de retorno 1, pero me gustaría controlar exactamente qué es ese código de retorno. Podría lograr los mismos resultados escribiendo mi propio script de envoltura
$ cat my-wrapper-script.sh # i.e., <some cmd> = ./my-wrapper-script.sh
#!/usr/bin/bash
exit $1
$ ./my-wrapper-script.sh 56
$ echo $?
56
pero espero que exista un comando estándar de Unix que pueda hacer esto por mí.
(exit 56)
?
true
e false
incorporados si necesitas devolver 0 o 1.
exit
es el único que se me ocurre, pero tiende a terminar con su caparazón.bash -c 'exit 56'
obash -c "exit $1"
podría funcionar para ti.