exit se o comando background falhar no shell script

0

Tenho certeza de que isso foi abordado, mas não tenho certeza de como encontrar a resposta:

#!/usr/bin/env bash

set -e;
false &
wait;
echo "lol"

se executarmos isso, obteremos "lol".

Existe uma maneira de sair do script se o comando de segundo plano (neste caso, "false") sair com um valor diferente de zero?

Nesse caso, set -e; não parece impedir que o script continue se um comando sair com um valor diferente de zero, se esse comando for executado em segundo plano.

    
por Alexander Mills 24.03.2018 / 05:31

1 resposta

1

Se você estiver usando uma versão recente do bash (acho que isso foi introduzido no bash 4), então você pode usar wait -n .

Caso contrário, você pode passar wait um argumento com o pid do processo em segundo plano que você iniciou, que é retornado em $! logo após você.

Consulte a documentação do comando de espera para obter mais detalhes sobre o status de devolução do comando wait .

Isso deve ser feito:

set -e
false &
wait -n
echo "lol"

E tudo bem também:

set -e
false &
background_pid=$!
wait "${background_pid}"
echo "lol"
    
por 24.03.2018 / 05:48