Como posso retornar um código de saída específico na linha de comando do Linux?

1

Eu tenho um programa que controla um processo de longa execução que é executado sobre o ssh em uma máquina remota. Freqüentemente, eu me desconecto no meio do processo, então mudei a invocação de algo assim:

my-long-cmd

para

my-long-cmd; echo $? > /tmp/my.cmd.status

Isso funciona; o próprio processo dá início a vários subprocessos e afins, portanto, mesmo que a conexão seja interrompida, ele continua em execução e meu script pode se reconectar periodicamente à máquina e verificar se o arquivo existe (e, portanto, a máquina concluiu o provisionamento), e se sim, ver se saiu com sucesso ou não.

No entanto, isso também significa que se eu não for desconectado, sempre visualizarei apenas o status de saída do comando echo na biblioteca ssh. Eu tentei fazer algo parecido com echo $? && return $? , mas return só funciona em scripts. Existe uma maneira fácil de fazer isso?

    
por Chris B. 05.12.2014 / 15:40

1 resposta

1

Use exit seguido pelo valor desejado. Zero é considerado sucesso, falha não zero. Isso é normalmente usado em um script e termina o (sub) shell de onde ele sai.

Se você deseja capturar o status de um comando, atribua $? a uma variável. Isso permite que você salve o valor depois de exibi-lo.

    
por 05.12.2014 / 16:04

Tags