for循环中的命令会影响迭代吗?

for循环中的命令会影响迭代吗?

在巴什中,

  1. 类似 C 的 for 循环的语法是:

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

    的执行是否会commands影响三个算术表达式expr1expr2和/或 的计算expr3,从而改变迭代次数(例如迭代次数)?

    或者迭代(例如迭代次数)是否不受commands每次迭代中执行的影响?

  2. for 命令的其他语法是:

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

    每次迭代中执行 是否会commands影响迭代次数(例如迭代次数)?

答案1

当然:

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

for ((expr1; expr2; expr3)形式中,expr2(和expr3,如果expr2没有失败)每次运行循环时都会进行评估。对于另一种形式,bash 在words展开后启动循环(包括执行命令替换、通配符等)。因此name,一旦循环开始,您就无法影响迭代变量 ( ) 的可能值。当然,您可以:

$ bash -c 'for i; do echo $i; break; done' _ a b c
a

相关内容