Bash: Como executar um script em background com “&” e usar “||” para executar outra coisa em falhas?

0

Estou tentando deixar um comando ser executado em segundo plano, mas também usar o "||" sintaxe para executar um comando diferente se o primeiro falhar. Exemplo:

$( <run-this-in-background> & || <run-this-if-failed>)

No entanto, estou recebendo um erro de sintaxe :

command substitution: line 15: syntax error near unexpected token '||'

Esta é a linha exata:

$(./temptwo.sh & || rc=$?)

Meu código completo é o seguinte ... Eu sei que parece um pouco estranho fazer rc=$? quando eu poderia fazer isso na linha seguinte, no entanto estamos usando um logger que irá sair do seu programa se qualquer linha sair com $? ! = 0, então a maneira de contornar isso é usando "./someCommand || rc = $?" que sairá com "0", mas também nos dará o código de retorno.

#default success code: 
rc=0 
#run temptwo.sh in the background. If it fails, set rc=$?
$(./temptwo.sh & || rc=$? )
#Trying to get the process id of "temptwo.sh" below (not sure if works)
pid=$! 
#Wait until the process finishes
wait $pid 
    
por Katie S 20.03.2018 / 22:22

1 resposta

1
/temptwo.sh & pid=$! ; wait $pid || rc=$?

Não faz muito sentido IMHO, no entanto.

/temptwo.sh & pid=$! ; wait $pid ; rc=$?
if [ "$rc" -gt 0 ]; then
...
    
por 20.03.2018 / 22:55