Em um Bash Script, como o comando continue funciona com loops incorporados?

3

Estou escrevendo um script bash em uma sessão do busybox.

O script tem que iniciar um executável externo várias vezes em seqüência no formato daemonised e monitorar a saída.

while read LINE; do
  VARIABLEPARAMETER='echo "$LINE" | sed -e 's/appropriateregex(s)//''
  externalprog --daemonize -acton $VARIABLEPARAMETER -o /tmp/outputfile.txt
  until [ "TRIGGERED" = "1" ]; do
    WATCHOUTPUT='tail -n30 /tmp/outputfile.txt'
    TRIGGERED='echo "$WATCHOUTPUT" | grep "keyword(s)"' 
    if [ -z "$TRIGGERED" ]; then
      PROGID='pgrep externalprog'
      kill -2 "$PROGID"
      continue
    fi
  done
done < /tmp/sourcedata.txt

Minha pergunta é qual dos dois loops o comando continue será executado?

A inicial enquanto lê a linha, ou a subsequente, até ser acionada?

Por favor, não se concentre no código real que eu usei como exemplo para tentar explicar essa questão, o código atual é muito mais detalhado.

    
por user22086 14.08.2012 / 21:28

1 resposta

8

De "ajuda continuar":

continue: continue [n]
    Resume for, while, or until loops.

    Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.
    If N is specified, resumes the Nth enclosing loop.

    Exit Status:
    The exit status is 0 unless N is not greater than or equal to 1.

Então, você deseja que continue ou continue 1 vá para a próxima iteração de until ou continue 2 para ir para a próxima iteração de while .

    
por 14.08.2012 / 23:04