Basta fazer um loop while infinito:
% bl0ck_qu0te%concluído
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.
Basta fazer um loop while infinito:
% bl0ck_qu0te%concluído
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