三、循环for

for循环用来将一组命令循环执行预先确定的遍数,基本格式如下:
for var in word1 word2 … wordn
do
command
command
done
包括在dodone之间的命令称为循环体。这些命令执行的遍数与in后面列举的词的个数相同。
当执行循环时,首先把in后的第一个词word1赋值给变量var,然后执行循环体中的命令;接着把in后的第二个词word2赋值给var,执行循环体。。。直到把最后一个词wordn赋值给var,执行最后一遍循环体,循环结束,shell接着执行done后面的命令。如果in后面列举了n个词,则循环体便总共执行n次。
下面这个循环总共执行3次:
for i in 1 2 3
do
    echo $i
done
可以将这些语句直接在终端上键入,以获得输出结果:
    $ for i in 1 2 3
> do
> echo $i
> done
1
2
3
$
也可以用分号把他们隔开写在同一行,dodone前面有分号就可以了。
 
$ for i in 1 2 3; do echo $i; done
1
2
3
$
循环体执行了3次,变量i也赋值了3次,分别是123,显示了3行内容(3echo)。
Shell也允许在for命令的词列表里面使用文件名替换:
$ for i in *;do echo $i;done
licong
lost+found
pub
share
steve
test
www
$
当前目录下有多少个文件,则循环体就执行多少次。
for还有另外一种形式,类似与C等其他编程类语言,举例如下:
for ((i=1;i<10;i++))
do
    echo $i
done
注意上面的双括号对(( ))是固定的格式,循环体do。。。done和前面讲的一样。同样,这种形式也能写在一行,直接在命令行键入:
$ for ((i=1;i<=5;i++));do echo $i;done
1
2
3
4
5
$
i++类似的还有一种写法++i,区别只在于先加在取值,还是先取值再加,这里就不再详细解释了。
 

四、循环whileuntil