executa o bash com os argumentos separados -c, exite 1234. -cconsome o argumento imediatamente após ele, então o bash é executado exitapenas; 1234é usado como o primeiro parâmetro posicional ( $0, o nome do shell).
Para que o bash saia com um determinado código, você precisa citar todo o comando:
bash -c "exit 1234"
Observe que os status de saída do bash são limitados a 0-255, portanto, isso produz um status de saída de 210 (1234% 256).
Você não pode com bash's exitembutido, mesmo se você corrigir seu código para ser executado exit 1234em vez de exitsozinho, pois bashse encarrega de truncar o valor para 8 bits:
De qualquer forma, observe que alguns sistemas como o Linux não permitem que o processo pai acesse o valor total desse status de saída mesmo ao usar a waitid()API ou um manipulador SIGCHLD sigaction()que é exigido pelo POSIX para não truncá-lo.
executa o bash com os argumentos separados
-c
,exit
e1234
.-c
consome o argumento imediatamente após ele, então o bash é executadoexit
apenas;1234
é usado como o primeiro parâmetro posicional ($0
, o nome do shell).Para que o bash saia com um determinado código, você precisa citar todo o comando:
Observe que os status de saída do bash são limitados a 0-255, portanto, isso produz um status de saída de 210 (1234% 256).
Você não pode com
bash
'sexit
embutido, mesmo se você corrigir seu código para ser executadoexit 1234
em vez deexit
sozinho, poisbash
se encarrega de truncar o valor para 8 bits:Você precisa executar outro comando no mesmo processo que pode sair com valores arbitrários:
De qualquer forma, observe que alguns sistemas como o Linux não permitem que o processo pai acesse o valor total desse status de saída mesmo ao usar a
waitid()
API ou um manipulador SIGCHLDsigaction()
que é exigido pelo POSIX para não truncá-lo.Mais detalhes sobre isso em: