Existe um comando Unix padrão que faz algo semelhante ao meu exemplo abaixo
$ <cmd here> 56
$ echo Return code was $?
Return code was 56
$
<cmd here>
deve ser algo que possa ser executado em fork e deixa 56 como o código de saída quando o processo é encerrado. Os componentes internos exit
e return
shell não são adequados para o que estou procurando, pois afetam o próprio invocador ao sair dele. <some cmd>
deve ser algo que eu possa executar em contextos não shell - por exemplo, invocar a partir de um script Python com subprocess
.
Por exemplo, /usr/bin/false
sempre sai imediatamente com o código de retorno 1, mas eu gostaria de controlar exatamente o que é esse código de retorno. Eu poderia alcançar os mesmos resultados escrevendo meu próprio script de wrapper
$ 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
mas espero que exista um comando Unix padrão que possa fazer isso por mim.
(exit 56)
?
true
e false
built-ins, se você precisa de retornar 0 ou 1.
exit
é o único que consigo pensar, mas tende a acabar com o seu shell.bash -c 'exit 56'
oubash -c "exit $1"
pode funcionar para você.