O comando dentro do loop for afeta as iterações?

1

No Bash,

  1. a sintaxe do loop for do tipo C é:

    for (( expr1 ; expr2 ; expr3 )) ; do commands ; done
    

    A execução de commands pode afetar as avaliações dos três expressões aritméticas expr1 , expr2 e / ou expr3 e portanto, alterar as iterações (por exemplo, o número de iterações)?

    Ou as iterações (por exemplo, o número de iterações) não são afetadas por execução de commands em cada iteração?

  2. A outra sintaxe do comando for é:

    for name [ [in [words ...] ] ; ] do commands; done
    

    A execução de commands em cada iteração afeta as iterações (por exemplo, o número de iterações)?

por Tim 24.04.2016 / 17:44

1 resposta

3

Claro:

$ bash -c 'for ((i=0;i<10;i++)); do echo $i; ((i++)); done'
0
2
4
6
8

No for ((expr1; expr2; expr3) , expr2 (e expr3 , se expr2 não falharam) são avaliados cada vez que o loop é executado. Com a outra forma, o bash inicia o loop após words ter sido expandido (isso inclui a execução de substituição de comandos, globbing, etc.). Portanto, você não pode afetar os possíveis valores da variável de iteração ( name ) depois que o loop for iniciado. Você pode, claro:

$ bash -c 'for i; do echo $i; break; done' _ a b c
a
    
por 24.04.2016 / 17:46

Tags