语法:
for((exp1;exp2;exp3))
do
statements
done
exp1;exp2;exp3是三个表达式。
exp2是判断条件。根据exp2的结果来决定是否继续下一次循环。
statements是循环语句,可以有一条或者多条。
do和done是shell中的关键字。
运行过程:1)先执行exp1,
2)再执行exp2,如果判断条件成立,则执行循环体中的语句,否则结束整个循环。
3)执行完循环体后再执行exp3
4)重复执行2)和3)的步骤,直到exp2判断不成立就结束循环。
2)和3)合并在一起算作一次循环,会重复执行,for语句的主要作用就是不断执行2)和3)。
exp1仅在第一次循环中执行,以后都不会执行,可以把它看作一个初始化语句。
exp2一般是一个关系表达式,决定了是否还要继续下次循环,称为循环条件。
exp3在很多情况下是一个带有自增或自减运算的表达式,以使循环条件逐渐变得不成立。
例如:计算1加到100的和
#! /bin/bash
sum=0
for((i=1; i<=100; i++))
do
((sum+=i))
done
echo"The sum is :$sum"
运行结果5050.
代码分析:
执行到for语句时,先给变量i赋值为1,然后判断i<=100是否成立;
接下来执行循环体中的语句,等循环体执行结束后(sum的值为1),再计算i++。
第二次循环时,i的值为2,i<=100成立,继续执行循环体。循环体执行结束后sum的值为3,再计算i++。
重复执行步骤2,直到101次循环,此时i的值为101,i<=100不成立,结束循环。
for循环中的三个表达式:
for循环中的exp1(初始化语句)、exp2(判断条件)和exp3(自增或自检)都是可选项,都可以省略(但是分号;必须保留)。
例如:省略exp1
把i=1移到for循环外面。
省略exp2,就没了判断条件,可以在循环体中使用break来强制结束循环。
省略exp3,就不会修改exp2中的变量了,所以在循环体中就如修改变量的语句