Finalize o script e reinicie-o com as mesmas opções e argumentos

0

Geralmente !! repete o último comando dado. Mas isso não parece funcionar em um script bash. Existe uma maneira de terminar um script e repeti-lo com as mesmas opções e argumentos da última vez?

Informações adicionais : Em uma parte do meu script, é verificado se um servidor está sendo executado. Se não for, é iniciado por etherwake. Esta é a parte onde eu quero que o script seja finalizado e reiniciado, até que o servidor esteja finalmente ativo. Ignorando o problema de que isso pode facilmente levar a um loop infinito que pode ameaçar a estabilidade do sistema / rede.

Existe uma maneira mais fácil / segura? Não parece haver um comando GOTO LINE ou algo semelhante.

    
por Markus 26.08.2014 / 11:48

2 respostas

2

Basta fazer um loop while infinito:

% bl0ck_qu0te%      

concluído

    
por lub 26.08.2014 / 12:00
1

Que tal

while server-is-not-running; do
    try-and-start-server
    sleep seconds-to-wait
done

onde

  • server-is-not-running é seu teste atual para ver se o servidor está em execução, isto é, uma função shell ou um comando externo retornando não-zero se o servidor estiver em execução (alternativamente, ! server-is-running se essa função ou comando retornar zero se o servidor está em execução).
  • try-and-start-server é o comando para iniciar o servidor, que novamente pode ser uma função de shell ou um comando externo
  • seconds-to-wait é um número razoável de segundos para esperar pelo início bem sucedido

Para limitar o número de tentativas, substitua o while por um for :

for i in {1..number-of-attempts}; do
    try-and-start-server
    sleep seconds-to-wait
    server-is-not-running || break
done
    
por zwets 26.08.2014 / 12:00