Como sair de um loop while

1

Eu estou tentando sair de um loop while assim que ele não retorna nenhuma saída.

Portanto, se eu estiver monitorando (com um loop while) a saída de um comando que muda, como eu saio do loop quando a string que estou monitorando não existe mais. (Diga "roxo" desaparece da seqüência de saída no exemplo abaixo)

$ while :; do clear;  "is_purple_present_monitoring_script" | grep purple  ; sleep 15; done
    
por Ernie 30.08.2017 / 00:00

2 respostas

2

É o último comando na lista de condições que determina quando o loop while sai.

while
  clear
  "is_purple_present_monitoring_script" | grep purple
do
  sleep 15
done

Você pode mover a condição para a lista de ações e usar break lá (e usar true ou : como a lista de condições) como:

while
  true
do
  clear
  "is_purple_present_monitoring_script" | grep purple || break
  sleep 15
done

Mas isso seria uma maneira bem planejada de usar um loop while .

    
por 30.08.2017 / 00:19
4

Use a declaração break :

while :; do
    clear;
    if ! "is_purple_present_monitoring_script" | grep purple; then 
        break
    fi;
    sleep 15;
done
    
por 30.08.2017 / 00:12