Como exatamente 'até $ @' funciona em scripts bash?

1

Recentemente, recebi um host no qual os aplicativos java são lançados dessa maneira:

/bin/bash ./restarter.sh java <lot of java params>

Garante que, se o aplicativo morrer, o restarter.sh executará novamente.

Existe conteúdo de restarter.sh :

#!/bin/bash
until "$@"; do
  echo "Server crashed with exit code $?.  Respawning.." >&2
  sleep 1
done

Por favor, ajude-me a entender como funciona.

    
por user1700494 26.02.2016 / 16:19

1 resposta

2

Significa fazer um loop até que o comando ("$ @") conclua a execução com um código de saída de 0.

Exemplo:

$ until (echo Myprog ; sleep 1; exit 1;); do echo Error respawning ...; done
Myprog
Error respawning ...
Myprog
Error respawning ...
Myprog
^C

$ until (echo Myprog ; sleep 1; exit 0;); do echo Error respawning ...; done
Myprog

Analisando seu script: Normalmente, um aplicativo bem escrito sairia com código de saída igual a zero na conclusão bem-sucedida e código de saída diferente de zero. No seu caso, você está usando o comando until para continuar reiniciando o aplicativo:

java <lot of java params> 

até que o aplicativo conclua sua execução com sucesso (código de saída de zero).

    
por 26.02.2016 / 16:27