shell脚本中for循环和while循环

目录

for循环

while 循环


前面说完了if判断语句,现在该来学习shell脚本中的另一个重点内容了,那就是循环语句。循环语句分为 for 循环和 while 循环,二者本质上来说是没有太大区别,但针对不同的情况,使用不同的语句可以事半功倍,我们先从for循环开始逐步学习。

for循环

for循环有几种语法结构,分别是列表循环,不带列表循环,类C风格的循环

循环列表

用法就是 for 变量名 in {1..10}  或者  for 变量名 seq i in $(seq 10)

do

执行语句

done

假如我要输出1~50 之间的数字,就不需要一个一个echo了

不带循环列表

for i

do         

        echo $i   或者  echo hello

done

类C风格循环

就和C语言中的for循环一致,先定义i的值,然后每执行一次操作,i+1,当i<=10的时候,停止

for ((i=0;i<=10;i++))

do

        执行的操作

done

循环语句差不多就是这样,没有什么需要特别记忆的原理之类的,主要就是记住规则后,巧妙地应用,然后多加练习

例1  打印50以内的奇数

还是老样子,我们先分析逻辑,50以内的奇数就是1,3,5,7,9......公差为2,如果从0-50全部打印那就是直接i++就可以了,那么同理,奇数就是从1开始,+2

这样就可以了,是不是很简单

运行结果

同理我们也可以输出比如,3的倍数,4的倍数等等

例2   批量添加10个用户并设置密码(用户名1...用户名10)

逻辑是,用户名后面的1..10是可以通过for循环连续输出的,所以我们只要创建用户时引用这个值就可以了,然后在脚本执行的时候输入 uname ,创建用户时再在$i前面引用uname,然后再将默认密码传递给passwd命令,就可以了

运行结果        

创建了这么多用户,总不能一个一个删吧,想要批量删除,直接把useradd 改成userdel ,后面的passwd修改密码内容全部删掉就ok了

例2同样的扩展,现实情况中,一个公司如果新入职一批员工,要为他们新建用户,假如用户名就是他们的名字,总不可能每个人都叫同一个名字吧?这种情况该如何处理? 

其实要改动的并不是很多,我们拿到名单后,将名字单独导入到一个txt文件,比如像这样

中间那一长串的意思就是,查看刚才导入的name.txt 文件,然后过滤第i行,第二列,就可以成功的依次导入新员工的姓名缩写了

看看执行结果(jay已经创建过了,所以这里只有八个人)

while 循环

while 循环不像for循环有不同的输入方式,它只有一种打开方式,那就是

while 表达式

do

执行的操作

done

首先先来一个简单的例题吧

例1  输出100以内,不能被7整除的数

思路和之前那个输出奇数差不多,只不过这次不是加了,是判断自增数是否能整除(%)7,i在100以内自增,每次自增都要判断一下是否能整除7,可以的话直接输出

看一下运行结果

大家可以找点例题或者需求来敲一敲,多加练习才是王道

  • 20
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值