Esiste un comando Unix standard che fa qualcosa di simile al mio esempio di seguito
$ <cmd here> 56
$ echo Return code was $?
Return code was 56
$
<cmd here>
dovrebbe essere qualcosa che può essere eseguito fork e lascia 56 come codice di uscita quando il processo termina. I builtin exit
e return
shell non sono adatti a quello che sto cercando perché influenzano la shell invocante stessa uscendo da essa. <some cmd>
dovrebbe essere qualcosa che posso eseguire in contesti non shell - ad esempio, invocando da uno script Python con subprocess
.
Ad esempio, /usr/bin/false
esce sempre immediatamente con il codice di ritorno 1, ma mi piacerebbe controllare esattamente cos'è quel codice di ritorno. Ho potuto ottenere gli stessi risultati scrivendo il mio script 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
ma spero che esista un comando Unix standard che possa farlo per me.
(exit 56)
?
true
e false
built-in, se avete bisogno di tornare 0 o 1.
exit
è l'unico a cui riesco a pensare, ma tende a finire il tuo guscio.bash -c 'exit 56'
obash -c "exit $1"
potrebbe funzionare per te.