Shell编程--循环语句--for循环、while循环以及until循环


一、for循环语句

  • 在我们实际的工作环境中,经常会进行重复性的工作,每次只是需要处理的对象不一而已
  • 举个例子,超市收银员
  • 如何能够效率更高的面对这类简单工作呢,这就是我们接下来要进行学习的for循环语句

1.结构

  • 指定一个变量及取值列表,读取不同的变量值,用来逐个执行同一组命令,直到变量值用完退出当前循环
  • 这里取值列表为for语句的执行条件,其中包括多个属性相同的对象,需要预先指定
#语法结构:
for 变量名 in 取值列表
do
        命令序列
done
  • 上述语句结构中注意空格!
  • 位于do···done之间的命令序列称为“循环体”
    mark
  • 如上图所示,执行流程是:
    • 首先将取值列表中的第一个取值赋予给变量,然后执行循环体中的命令序列
    • 然后再将第二个取值赋予给变量,进行循环命令以此类推直到取值用完
    • 最后跳至done语句,表示循环结束

2.应用示例

2.1 使用for批量添加用户

  • 创建一个新文件,存放用户名
    mark
    mark
    mark
    mark
  • 再来批量删除用户,加深印象
    mark
    mark

2.2 根据IP地址列表检测主机状态

  • 检测192.168.126网段的取值列表内网络连通性
    mark
    mark
  • 上述脚本中,do···done循环体内使用了if语句
  • 实际上if、for以及其他的各种shell脚本都是可以嵌套使用的

2.3 经典!用循环语句计算数字1~100的总和

mark
mark

  • 另一种方法
  • 这里的用法跟上文是一样的意思
    mark
    mark

2.4 提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和

  • 简单~
    mark
  • 注意“+=”的用法
    mark
    mark

2.5 求从1到100所有整数的偶数和、奇数和(到用户所输入的数字为止)

mark
mark


二、While循环语句

  • for语句适用于列表对象无规律,且列表来源已固定的场合
  • 而对于要求控制循环次数、操作对象按数字顺序编号、按特定条件执行重复操作等等更加细分的情况,我们应该怎么办呢
  • 怎么样,是不是感觉像抽奖,买彩票一样
  • 有需求就会有响应解决办法,这就是我们接下来要学习的while循环语句

1.结构

  • 重复测试某个条件,只要条件成立则反复执行,直到该条件不再满足为止
  • 根据上述情况,应避免出现死循环的情况,否则后面有指令都将无法执行
  • 因此,循环体内的命令序列中应该包括修改测试条件的语句,以便在适当的时候使测试条件不再成立,从而结束循环
#语句结构
while 条件测试操作
do
        #命令序列
done

##示例
while 未猜中正确价格
do
        #反复猜测商品价格
done

mark

  • 首先判断条件测试操作,若条件成立则执行do···done循环体中的命令序列;返回while后再判断···如此往复循环,直到while后的条件测试操作不成立位置,最后跳转至done结束循环

2.应用示例

2.1 批量添加规律编号的用户

mark
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xy2RNtJL-1608469869870)(14CD4AEA4ECA4147B4AEF577405215DD)]

  • 再来批量给删除了
    mark
    mark

2.2 猜价格游戏

  • 提示用户猜测并记录猜测次数,猜中后即可退出循环
  • 通过环境变量RANDOM可获取一个随机整数,计算其与1000的余数即可获得0~999的随机价格
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1qJ2eez8-1608469869871)(B2C666B3AF6941B692B066129383DB65)]
  • exit 0 返回至“0”,完成测试后退出当前循环所用
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZI4vDGaK-1608469869871)(24B8EE95626F47BBB9FDDE537B3EA8E4)]

2.3 提示用户输入一个小于100的整数,并计算从1到该数之间所有整数之和

mark
mark

  • 上图那个循环体的逻辑可能大家还不是很清楚,首先是:sum=0+1=1,i=1,然后下一次循环,sum=1+2=3,i=2;sum=3+3=6(1+2+3),i=3,一直循环至用户所输数字为止,下面的let i++就是这个能一起结合起来,并且最终跳出循环的条件
  • 逻辑思维多锻炼锻炼,灵活应用,能实现这个的方法是很多的,笔者自己也是初学,大家一起慢慢进步

2.4 提示用户输入一个小于100的整数,计算出从1到该数之间所有整数的偶数和、奇数和

mark
mark


三、until循环语句

1.结构

  • 重复测试某个条件,若条件不成立则反复执行
语句结构:
until 条件测试操作
do  
   命令序列
done
  • 和 while 是相反的逻辑,在实际使用中比较少,因为大家一般都是正向逻辑

2.应用示例

  • 计算1~100所有整数之和
    mark
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ooQOE06H-1608469869874)(BADE30E5EA0A4426A92413267319E0F4)]
  • 怎么样,是不是一模一样,就是语句结构的第一句变了,我反着来
  • 若i大于用户输入的数这个条件不成立就会,反复执行,即i小于用户输入的数字就会反复执行,反向思维有点绕~哎

猜你喜欢

转载自blog.csdn.net/weixin_51486343/article/details/111462846