Eu tenho uma estrutura escrita em python e, para fins de teste, basicamente quero fazer um subprocesso (também chamado de shell) ... que deve simplesmente retornar com um RC! = 0. Tentei invocar alguns executáveis inexistentes; ou para executar "exit 1"; por algum motivo, esses são traduzidos para um FileNotFoundError.
Portanto, o que mais eu poderia fazer para acionar um código de retorno! = 0 (de uma maneira "confiável"; ou seja, o comando não deve retornar repentinamente 0 em um momento futuro).
Eu pensei em "procurar" por um binário chamado exit, mas bem:
> /usr/bin/env exit
/usr/bin/env: exit: No such file or directory
command-line
bash
python
scripts
GhostCat
fonte
fonte
exit 1
é o caminho a seguir. O FileNotFoundError deve ser causado por outra coisa./bin/false
?Respostas:
Se você está procurando um comando do sistema que sempre retorna um código de saída diferente de zero,
/bin/false
parece que ele deve funcionar para você. Deman false
:fonte
/bin/false 5; echo $?
5
) são ignoradosVocê pode criar um novo código de retorno com o comando
bash -c "exit RETURNCODE"
, substituindo "RETURNCODE" por qualquer número. Observe que ele será aparado em um número inteiro não assinado de 8 bits (0 ... 255) por (RETURNCODE mod 256)Você pode verificar o código de retorno do último comando do shell dentro do terminal (!) Com a execução
echo $?
. O "$?" A variável contém o código de retorno mais recente e "eco" o imprime na saída padrão.fonte
exit RETURNCODE
(sem abash -c
parte)Após mais alguns testes, descobri que meu problema não estava no lado "Linux".
Python tem um módulo shlex; que deve ser usado para "dividir" cadeias de comando. Quando mudei minha chamada de subprocesso para usar a saída da
shlex.split()
chamada "saída 1 do bash", obtive o que eu precisava.fonte