五、流程控制之循环

1.  带列表的for循环语句:

带列表的for循环通常用于将一组语句执行已知的次数,其基本语法如下:

for variable in list
do
        statement1
        statement2
        ...
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 variable
do
        statement1
        statement2
        ...
done

 由于系统变量$@同样可以获取所有的参数,所以以上的语法等价于以下语法:

for variable in $@ $*
do
        statement1
        statement2
        ...
done

 3.  C风格的for循环语句:

for ((expression1; expression2; expression3))
do
        statement1;
        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/bash
for ( (i = 1 ;i< = 254 ;i ++ ))
do
        if ping -c 2 192 .168.3. $i &>/dev/null
        then
                echo "192.168.3. $i is up..."
        else
                echo "192.168.3. $i is down..."
        fi
done

4.  while循环语句

while 循环语句的基本语法如下:
while expression
do
        statement1
        statement2
        ...
done
        expression表示 while 循环体执行时需要满足的条件。虽然可以使用任意合法的 Shell命令,但是,通常情况下,expression 代表一个测试表达式,当 expression 的值为 0 时才执行循环体中的语句,每次执行到done 时就会重新判断 while 条件表达式是否成立,当 expression 的值为非 0 值时,将退出循环体。与其他的循环结构一样,do done 2 个关键字之间的语句构成了循环体。
while 循环读取文件
[root@localhost test5] # cat file
shuju1
shuju2
shuju3
方法一:采用exc读取文件,然后进入while循环处理,。
[root@localhost test5] # cat file.sh
#!/bin/bash
exec < file
while read content
do
        echo $content
done
[root@localhost test5] # bash file.sh
shuju1
shuju2
shuju3
方法二:使用cat读文件,然后通过管道进入while循环处理,语法如下:
cat F ile | while read line
do
        statement1
done
方法三:通过在while循环结尾,使用输入重定向方式,语法如下:
while read line
do
        statement1
done < File

 5.  until循环语句

         until语句的作用是将循环体重复执行,直到某个条件成立为止。until语句的基本语法如下:
until expression
do
        statement1
        statement2
        ...
don
        expression是一个条件表达式。当该表达式的值不为 0 时,将执行 do done 之间的语句;当expression 的值为 0 时,将退出 until 循环结构,继续执行 done 语句后面的其它的语句。
6.  select 循环语句:
        select循环语句的主要功能是创建菜单,在执行带有 select 循环语句脚本时,输出会按照数字顺序的列表显示一个菜单,并显示提示符(默认是# ?),同时等待用户输入数字选择。 select 语句的基本语法如下:
select 变量名 [ in 菜单值列表 ]
do
        statement1
        statement2
        ...
done

 7.  利用breakcontinue语句控制循环:

        在Shell 中的循环结构中,还有 2 个语句非常有用,即 break continue 语句。前者用于立即从循环中退出;而后者则用来跳过循环体中的某些语句,继续执行下一次循环。
        break语句的作用是立即跳出某个循环结构。 break 语句可以用在 for while 或者 until 等循环语句的循环体中。
        continue语句则比较有趣,它的作用不是退出循环体。而是跳过当前循环体中该语句后面的语句,重新从循环语句开始的位置执行。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值