shell_for循环_while_until_break_continue语句用法

桃扇骨 2021-07-27 01:56 719阅读 0赞

这里写目录标题

  • 一.for语句接构
    • 1.概述
    • 2.三种表达式
      • 表示形式1:
      • 表示形式2:
      • 表示形式3:
    • 二.实例
      • 1.批量添加用户
        • 2根据ip地址检测主机状态
        • 3.计算从1到100所有整数的和
          • 4.提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和
          • 5.滤出从1到100所有整数的奇偶数
            • 6.求从1到100所有整数的偶数和、奇数和
            • 7.检测指定范围主机是否通信,并将通信的主机ip输出到文件host_ip
            • 8.输出/dev目录中的所有可执行文件
      • 三.while 语句
        • 1.概述
          • .实例
            • 1.批量添加用户
            • 2.猜商品价格游戏
        • 四.until语句
          • 1.概述
            • 实例
            • 1.计算1-50的和
          • 五.break 跳出单个循环
          • 六.continue 中止某次循环中的命令
            • 七.IFS字段分隔符
            • 八.转义字符

一.for语句接构

1.概述

  • 读取不同的变量值,用来逐个执行同一组命令

    for 变量名 in 取值列表
    do
    命令序列
    done

在这里插入图片描述

2.三种表达式

表示形式1:

在这里插入图片描述

表示形式2:

在这里插入图片描述

表示形式3:

在这里插入图片描述

在这里插入图片描述

二.实例

1.批量添加用户

  • 批量添加用户
  • 用户名存放在users.txt文件中
  • 初始密码设为123456
  • 验证脚本

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

2根据ip地址检测主机状态

  • 根据ip地址检查主机状态
  • 使用pin命令检测各主机的连通性

    !/bin/bash

    for i in 192.168.133.{ 1..10}
    do
    ping -c 3 -i 1 -W 2 $i &> /dev/null

    echo “$i is online”
    done
    ~

在这里插入图片描述在这里插入图片描述

3.计算从1到100所有整数的和

  1. #!/bin/bash
  2. sum=0
  3. i=1
  4. for i in { 1..100}
  5. do
  6. sum=$[$i+$sum]
  7. done
  8. echo $sum
  9. ~

在这里插入图片描述

在这里插入图片描述

4.提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和
  1. #!/bin/bash
  2. sum=0
  3. read -p "输入一个1-100的整数" c
  4. for ((i=1;i<=$c;i++))
  5. do
  6. sum=$[$sum + $i]
  7. done
  8. echo "1到$i的所有整数和为" $sum

在这里插入图片描述
在这里插入图片描述

5.滤出从1到100所有整数的奇偶数
  1. #!/bin/bash
  2. sum=0
  3. for i in { 1..100}
  4. do
  5. a=$(($i % 2))
  6. if
  7. [ $a -eq 0 ]
  8. then
  9. echo "$i为偶数"
  10. else
  11. echo "$i为奇数"
  12. fi
  13. done

在这里插入图片描述
在这里插入图片描述

  1. 方法2
  2. #!/bin/bash
  3. for i in { 1..100..2}
  4. do
  5. echo "奇数为:" $i
  6. done
  7. for i in { 2..100..2}
  8. do
  9. echo "偶数为:" $i
  10. done
  11. ~
6.求从1到100所有整数的偶数和、奇数和
  1. #!/bin/bash
  2. sum=0
  3. sen=0
  4. for i in { 1..100..2}
  5. do
  6. sum=$[$sum + $i]
  7. done
  8. for i in { 0..100..2}
  9. do
  10. sen=$[$sen +$i]
  11. done
  12. echo "奇数和为:"$sum
  13. echo "偶数和为:"$sen

在这里插入图片描述在这里插入图片描述

7.检测指定范围主机是否通信,并将通信的主机ip输出到文件host_ip
  1. #!/bin/bash
  2. for i in 192.168.133.{ 10..20}
  3. do
  4. ping -c 3 -i 0.5 -W 2 $i && echo "$i is online" && >> host_ip
  5. done

在这里插入图片描述
在这里插入图片描述

8.输出/dev目录中的所有可执行文件
  1. #!/bin/bash
  2. for i in /dev/*
  3. do
  4. if [ -x $i ]
  5. then
  6. echo "$i 有执行权限"
  7. else
  8. echo "$i 无执行权限"
  9. fi
  10. done
  11. ~

在这里插入图片描述

三.while 语句

1.概述

  • 重复测试某个条件,只要条件成立则反复执行

    while 条件测试操作
    do
    命令序列
    done

在这里插入图片描述
在这里插入图片描述

.实例
1.批量添加用户
  • 用户名称以stu开头,按数字进行编号
  • 一共添加20个用户,即stu1…stu20
  • 初始密码设置为123456

    !/bin/bash

    i=1
    c=”stu”
    while [ $i -le 20 ]
    do

    1. useradd $c$i
    2. echo "123456" | passwd --stdin $c$i

    let i++
    done
    ~

在这里插入图片描述
在这里插入图片描述

2.猜商品价格游戏
  • 0-999价格之间
  • 会提示用户猜大了,猜小了
  • 提示用户猜测并记录次数,猜中后退出循环

    在这里插入代码片

  1. price=$[$RANDOM % 1000]
  2. a=0
  3. num=0
  4. echo "猜猜商品价格是多少"
  5. while [ $a -eq 0 ]
  6. do
  7. let num++
  8. read -p "请输入你猜的价格:" b
  9. if [ $b -eq $price ];then
  10. echo "恭喜,你猜对了!"
  11. let a++
  12. elif [ $b -gt $price ];then
  13. echo "你猜大了!"
  14. elif [ $b -lt $price ];then
  15. echo "你猜小了!"
  16. fi
  17. done
  18. echo "你总共猜了 $num 次。"

在这里插入图片描述

四.until语句

1.概述
  • 重复测试某个条件,只要条件不成立则反复执行

    until 条件测试操作
    do
    命令序列
    done

在这里插入图片描述

  1. #!/bin/bash
  2. c=0
  3. until [ $c -ge 5 ]
  4. do
  5. echo $c
  6. let c++
  7. done
  8. ~

在这里插入图片描述
在这里插入图片描述

实例
1.计算1-50的和
  • 通过循环累加的方式计算1-50的和值

    !/bin/bash

    c=0
    sum=0
    until [ $c -gt 50 ]
    do
    sum=$[$sum + $c]
    let c++
    done
    echo “1-50的和值为:” $sum

在这里插入图片描述
在这里插入图片描述

五.break 跳出单个循环
  1. #!/bin/bash
  2. for ((a=1; a<=5; a++))
  3. do
  4. echo "外层循环为:" $a
  5. for ((b=1; b<=5; b++))
  6. do
  7. echo "内层循环为:" $b
  8. if [ $b -eq 3 ]
  9. then
  10. break
  11. fi
  12. done
  13. done

在这里插入图片描述
在这里插入图片描述
break2:

在这里插入图片描述
在这里插入图片描述

六.continue 中止某次循环中的命令
  1. #!/bin/bash
  2. for ((a=1; a<=5; a++))
  3. do
  4. echo "外层循环为:"$a
  5. if [ $a -gt 2 -a $a -lt 4 ]
  6. then
  7. continue
  8. fi
  9. echo $a
  10. done

在这里插入图片描述

在这里插入图片描述

七.IFS字段分隔符
  1. 默认包含 空格,制表符,换行符
  2. 查看命令:set | grep IFS
  3. IFS=$' \t\n'
  4. 修改成只换行
  5. IFS=$'\n'
  6. IFS=:
  7. IFS=','
  8. IFS.OLD=$IFS
  9. IFS=$'\n'
  10. ...
  11. IFS=$IFS.OLD

在这里插入图片描述

八.转义字符
  1. echo -n 表示不换行输出
  2. echo -e 输出转义字符,将转义后的内容输出到屏幕上
  3. 常用的转义字符如下:
  4. \b 转义后相当于按退格键(backspace),但前提是"\b"后面存在字符;"\b"表示删除前一个字符,"\b\b"表示删除前两个字符。
  5. \c 不换行输出,在"\c"后面不存在字符的情况下,作用相当于 echo -n 但是当"\c"后面仍然存在字符时,"\c"后面的字符将不会被输出。
  6. \n 换行,被输出的字符从"\n"处开始另起一行。
  7. \f 换行,但是换行后的新行的开头位置连接着上一行的行尾;
  8. \v \f相同;
  9. \t 转以后表示插入tab,即横向制表符;
  10. \r 光标移至行首,但不换行,相当于使用"\r"以后的字符覆盖"\r"之前同等长度的字符;但是当"\r"后面不存在任何字符时,"\r"前面的字符不会被覆盖
  11. \\ 表示插入"\"本身;
  • -n:

在这里插入图片描述

在这里插入图片描述

  • echo -e “\b”的用法

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,719人围观)

还没有评论,来说两句吧...

相关阅读

    相关 goto语句

    gnto语句是无条件转向语句,它的格式如下所示: gota(语句标号>; 其中,goto是关键字,(语句标号)是一种标识符,按标识符的规则来写出语句标号。语句标号是用来