当前位置: 首页> 文旅> 酒店 > shell脚本中for循环和while循环

shell脚本中for循环和while循环

时间:2025/7/13 9:53:51来源:https://blog.csdn.net/qq_59677536/article/details/140550707 浏览次数:0次

目录

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,可以的话直接输出

看一下运行结果

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

关键字:shell脚本中for循环和while循环

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: