1. 带列表的for循环语句:
带列表的for循环通常用于将一组语句执行已知的次数,其基本语法如下:
for variable in listdostatement1statement2...done
variable称为循环变量,list是一个列表,可以是一系列的数字或者字符串,元素之间使用空格隔开。do和done之间的所有的语句称为循环体,即循环结构中重复执行的语句。for循环体的执行次数与list中元素的个数有关。在带列表的for语句执行时,Shell会将in关键字后面的list列表的第1个元素的值赋给变量variable,然后执行循环体;当循环体中的语句执行完毕之后,Shell会将列表中的第2个元素的值赋给变量variable,然后再次执行循环体。当list列表中的所有的元素都被访问后,for循环结构终止,程序将继续执行done语句后面的其他的语句。
2. 不带列表的for循环语句:
在某些特殊情况下,for循环的条件列表可以完全省略,称为不带列表的for循环语句。如果没有为for循环提供条件列表,Shell将从命令行获取条件列表。不带列表的for循环语句的一般语法如下:
for variabledostatement1statement2...done
由于系统变量$@同样可以获取所有的参数,所以以上的语法等价于以下语法:
for variable in $@或$*dostatement1statement2...done
3. 类C风格的for循环语句:
for ((expression1; expression2; expression3))dostatement1;statement2;...done
for循环语句的执行条件被2个圆括号包括起来。执行条件分为3个部分,由2个分号隔开,第1部分expression1通常是条件变量初始化的语句;第2部分expression2是决定是否执行for循环的条件。当expression2的值为0时,执行整个循环体;当expression2的值为非0时,退出for循环体。第3部分,即表达式expression3通常用来改变条件变量的值,例如递增或者递减等。
示例2:编写一个 Shell 程序,实现判断当前网络(假定为192.168.3.0/24,根据实际情况实现)里,当前在线用户的IP有哪些。
[root@localhost test5]# vim online_user.sh#!/bin/bashfor ((i=1;i<=254;i++))doif ping -c 2 192.168.3.$i &>/dev/nullthenecho "192.168.3.$i is up..."elseecho "192.168.3.$i is down..."fidone
4. while循环语句 :
while循环语句的基本语法如下:
while expressiondostatement1statement2...done
expression表示while循环体执行时需要满足的条件。虽然可以使用任意合法的Shell命令,但是,通常情况下,expression代表一个测试表达式,当expression的值为0时才执行循环体中的语句,每次执行到done时就会重新判断while条件表达式是否成立,当expression的值为非0值时,将退出循环体。与其他的循环结构一样,do和done这2个关键字之间的语句构成了循环体。
while循环读取文件 :
[root@localhost test5]# cat fileshuju1shuju2shuju3方法一:采用exc读取文件,然后进入while循环处理,。[root@localhost test5]# cat file.sh#!/bin/bashexec < filewhile read contentdoecho $contentdone[root@localhost test5]# bash file.shshuju1shuju2shuju3方法二:使用cat读文件,然后通过管道进入while循环处理,语法如下:cat File | while read linedostatement1done方法三:通过在while循环结尾,使用输入重定向方式,语法如下:while read linedostatement1done < File
5. until循环语句 :
until语句的作用是将循环体重复执行,直到某个条件成立为止。until语句的基本语法如下:
until expressiondostatement1statement2...don
expression是一个条件表达式。当该表达式的值不为0时,将执行do和done之间的语句;当expression的值为0时,将退出until循环结构,继续执行done语句后面的其它的语句。
6. select循环语句:
select循环语句的主要功能是创建菜单,在执行带有select循环语句脚本时,输出会按照数字顺序的列表显示一个菜单,并显示提示符(默认是#?),同时等待用户输入数字选择。select语句的基本语法如下:
select 变量名 [ in 菜单值列表 ]dostatement1statement2...done
7. 利用break和continue语句控制循环:
在Shell中的循环结构中,还有2个语句非常有用,即break和continue语句。前者用于立即从循环中退出;而后者则用来跳过循环体中的某些语句,继续执行下一次循环。
break语句的作用是立即跳出某个循环结构。break语句可以用在for、while或者until等循环语句的循环体中。
continue语句则比较有趣,它的作用不是退出循环体。而是跳过当前循环体中该语句后面的语句,重新从循环语句开始的位置执行。