文章目录

  • 1.for语句的结构
    • 示例1
    • 示例2
    • 示例3
    • 示例4
  • 2.while语句的结构
    • 示例1
  • 3.until语句的结构
    • 示例1

1.for语句的结构

总结:

条件需要你预先已经知道会出现哪些情况,根据情况做出措施。

循环的主体是一些重复性的操作,当然了,重复性的操作也有循环条件的,这个循环条件是可以后给的。

在实际工作中,经常会遇到某项任务需要多次执行的情况,而每次执行时仅仅是处理的对象不一样,其他命令相同。例如根据通讯录中的姓名列表创建系统账号,根据服务器清单检查各主机的存活状态,根据IP地址黑名单设置拒绝访问的防火墙策略等。

当面对各种列表重复任务时,使用简单的if语句已经难以满足要求,而顺序编写全部代码更是显得异常烦琐、困难重重。而for循环语句,可以很好地解决类似问题。

使用for循环语句时,需要指定一个变量及可能的取值列表,针对每个不同的取值重复执行相同的命令序列,直到变量值使用完退出循环。在这里,“取值列表”称为for语句的指行条件,其中包括多个属性相同的对象,需要预先指定(如通讯录、IP黑名单等)。

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

示例1

需求:根据人事部门给出的员工的拼音列表,在Linux服务器中添加相应的用户账户,初始密码均设置为“123456”。其中员工列表中的账号数量并不固定,而且除了要求账户名称时拼音之外,并无其他特殊规律。

1.创建一个新用户列表,内容根据人事给定的姓名拼音来认定
[root@server ~]# vim users.txt
zhangsan
lisi
wangwu
2.循环创建列表里这些用户,并给他们这些设定初始密码,密码为“123456”
[root@server ~]# vim uaddfor.sh
#!/bin/bash
ULIST=$(cat /root/users.txt)
for UNAME in $ULIST
do
useradd $UNAME
echo "123456" | passwd --stdin $UNAME &> /dev/null
done[root@server ~]# sh uaddfor.sh
[root@server ~]# tail -f /etc/passwd
......
zhangsan:x:1003:1003::/home/zhangsan:/bin/bash
lisi:x:1004:1004::/home/lisi:/bin/bash
wangwu:x:1005:1005::/home/wangwu:/bin/bash更改以上脚本
[root@server ~]# cat uaddfor.sh
#!/bin/bash
ULIST=$(cat /root/users.txt)
for UNAME in $ULIST
doif [ $uname == `grep $UNAME /etc/passwd | awk -F: '{print $1}'` ]then echo "姓名重复"fiuseradd $UNAMEecho "123456" | passwd --stdin $UNAME &> /dev/null
done

示例2

若某些用户离职,把必要文件备份过后,就需要把一些用户连带他的宿主目录删除

1.创建离职用户名单
[root@server ~]# cat users.txt
zhangsan
lisi
[root@server ~]# cat udelfor.sh
#!/bin/bash
ULIST=$(cat /root/users.txt)
for UNAME in $ULIST
doa=`ls -lh /home/$UNAME | awk '{print $2}'`if [ $a -ne 0 ]then cp -r /home/$UNAME /userfile_backupfiuserdel -r $UNAME &> /dev/null
done[root@server ~]# sh udelfor.sh
[root@server ~]# id zhangsan
id: zhangsan: no such user

示例3

根据包含公司各服务器IP地址的列表文件,检查其中各主机的ping连通性,输出各主机是否启动、关闭。其中,服务器的数量并不固定,各服务器的IP地址之间也无特殊规律。

1.创建需要测试的主机列表
[root@server ~]# cat ipadds.txt
192.168.100.11
192.168.100.12
192.168.100.13
2.创建循环主体,根据ping的结果反馈,如果为真则认定其是在线,如果为假则认为其是下线的。
[root@server ~]# cat chkhosts.sh
#!/bin/bash
HLIST=$(cat /root/ipadds.txt)
for ip in $HLIST
doping -c 3 -i 0.2 -W 3 $ip &> /dev/nullif [ $? -eq 0 ]then echo "host $ip is up"else echo "host $ip is down"fi
done
[root@server ~]# sh chkhosts.sh
host 192.168.100.11 is up
host 192.168.100.12 is up
host 192.168.100.13 is down

示例4

根据列表给定的加班用户,给相应的用户工资加100元

分析:1.确定用户名单 2.根据用户名单加100元

[root@server ~]# cat jiaban.txt
zhangsan
lisi
wangwu[root@server ~]# cat gongzi.sh
#!/bin/bash
# get a salary list
base_money=3000
list=$(cat /root/jiaban.txt)
for user in $list
domoney=$(expr $base_money + 100)echo "$user salary is $money"
done
[root@server ~]# sh gongzi.sh
zhangsan salary is 3100
lisi salary is 3100
wangwu salary is 3100

位置变量给定用户和加班天数,算加班工作

[root@server ~]# cat gongzi.sh
#!/bin/bash
# get a salary list
base_money=3000
for user in $1
domoney=$(expr $base_money + 100 \* $2)echo "$user salary is $money"
done
[root@server ~]# sh gongzi.sh lisi 5
lisi salary is 3500

2.while语句的结构

for循环语句非常适用于列表无规律,且列表来源已固定(如某个列表文件)的场合。而对于要求控制循环次数、操作对象按数字顺序编号、按特定条件执行重复操作等情况,则更适合使用另外一种循环——while语句。

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

使用while循环语句时,可以根据特定的条件反复执行一个命令序列,直到该条件不再满足时为止。当测试条件不再成立,从而结束循环

示例1

需求1:若要添加20个用户,名称依次为stu1、stu2、…、stu20.

[root@server ~]# cat uaddwhile.sh
#!/bin/bash
prefix="stu"
i=1
while [ $i -le 20 ]
douseradd ${prefix}$iecho "123456" | passwd --stdin ${prefix}$i &> /dev/nulllet i++
done
[root@server ~]# sh uaddwhile.sh
[root@server ~]# grep "stu" /etc/passwd | tail -5
stu16:x:1016:1016::/home/stu16:/bin/bash
stu17:x:1017:1017::/home/stu17:/bin/bash
stu18:x:1018:1018::/home/stu18:/bin/bash
stu19:x:1019:1019::/home/stu19:/bin/bash
stu20:x:1020:1020::/home/stu20:/bin/bash
[root@server ~]# cat uaddwhile2.sh
#!/bin/bash
i=1
while [ $i -le 30 ]
douname=stu$iif [ $uname==`grep $uname /etc/passwd | awk -F: '{print $1}'` ]then echo "姓名重复"fiuseradd $unameecho 123456 | passwd --stdin $uname &> /dev/nulllet i++
done

3.until语句的结构

until循环语句与while循环类似,while循环能实现的脚本until同样也可以实现,,但区别是while循环在条件真是继续执行循环,而until则是在条件为假时执行循环

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

示例1

计算1~50的和值
通过循环累加的方式计算1-50的和值

#!/bin/bash
i=1
sum=0
until [ $i -eq 51 ]
dolet sum+=$ilet i++
done
echo "和为:$sum"

Shell编程之循环语句(for、while、until)相关推荐

  1. shell编程之循环语句

    shell编程之循环语句 文章目录 shell编程之循环语句 一.for循环语句 1. for循环语法结构 ㈠ 列表循环 2. 应用案例 二.while循环语句 1. while循环语法结构 2. 应 ...

  2. Shell编程之循环语句(详细讲解以及脚本案例)

    Shell编程之循环语句(详细讲解以及脚本案例) 文章目录 一.for语句的结构 (一).for语句应用实例 1.示例1--批量添加用户 2.示例2--使用根据IP地址检查主机状态 3.示例3--fo ...

  3. Shell编程之循环语句与常用转义字符及一些小实验

    for循环语句 循环控制语句 seq命令 实例: while循环 实例: until循环 实例: 常用转义字符 shell脚本多重循环小实验 一.99乘法表 二.矩形 三.直角三角形 四.等腰直角三角 ...

  4. 【Shell编程之循环语句与函数】

    目录 一.for循环语句 示例: 示例1 示例2 示例3 二.跳出循环 举例 转义符 三.while 语句的结构 示例: 四.until语句的结构 1.基本格式 五.seq命令 一.for循环语句 读 ...

  5. (四)shell编程之循环结构

    shell编程之循环结构 #本机课程目标 掌握for循环语句的基本语法结构 掌握while和until循环语句的基本语法结构 一.for循环语句 关键词:爱的魔力转圈圈

  6. shell编程之条件语句(文件测试,test命令,字符串和逻辑测试,if单支语句,if双支语句,if多支语句,case命令,用if写跑步小实验)

    文章目录 shell编程之条件语句 条件测试 test命令 整数值测试 free -m 提供了更简洁的查看系统内存使用情况: 字符串和逻辑测试 字符串 逻辑测试 一元运算符,二元运算符和三元运算符 i ...

  7. Linux Shell脚本多循环语句练习题

    Linux Shell脚本多循环语句练习题 99乘法表 矩形 正直角三角形 反直角三角形 倒直角三角形 等腰三角形 倒等腰三角形 菱形 平行四边形 直角梯形 等腰梯形 99乘法表 #!/bin/bas ...

  8. Shell编程之条件语句(if语句,case分支语句)

    Shell编程之条件语句 一.条件测试操作 1.test命令 2.文件测试 3.整数值比较 4.字符串比较 5.逻辑测试 二.if语句 单分支结构 双分支结构 多分支结构 三.case分支语句 一.条 ...

  9. Shell:shell中的循环语句

    shell中的循环语句 for语法格式 for var in list;do commands done 其中list可以包含: 1) 直接写 for alpha in a b c d;doecho ...

最新文章

  1. android帧动画实现方法之一
  2. 腾讯云推出一站式 DevOps 解决方案 —— CODING DevOps
  3. IXDC 2018 | 打动人心的互联网保险设计
  4. java 反射 找不到方法_Java获取反射的三种方法
  5. layui 折叠面板使用无效问题
  6. excel拼接数据宏
  7. java class文件常量池_JAVA程序员谈谈class文件结构中的常量池-class文件
  8. mysql java 代码生成器_java代码生成器
  9. java实训自我总结_java实训个人总结
  10. 用树形算法思想去使用思维导图\树形图\鱼骨图
  11. visio画图复制粘贴到word_Visio 2010怎么复制图片 Visio粘贴图形到其它office程序
  12. 论文阅读《SHINE: Signed Heterogeneous Information Network Embedding for Sentiment Link Prediction》
  13. AT32F435_437_USB_MSC_SDIO
  14. 基于uniapp的个人课程表
  15. 反病毒工具-Wsyscheck,Xuetr,PowerTool
  16. 计算机vf中rest是什么意思,vf常用命令(全)
  17. 【硬核游戏攻略】2.matlab中调用Java实现《大家来找茬》快速求解器
  18. 百度有钱的使用教程(有图指导)
  19. 记Linux服务器中的 kdevtmpfsi 挖矿病毒
  20. 【转】GHOST XP﹢WIN7装双系统图解教程

热门文章

  1. Java全能面试笔记,已成功帮助1266+人进入大厂
  2. 【教程】网络安全工具FileAudit中配置你的第一个Audit路径
  3. URP管线中自定义Bloom
  4. 8位Java风云人物
  5. 键盘监听器————在飞机大战中的利用(移动,加速,发射子弹,一应俱全)
  6. Objective-C对象dealloc过程
  7. vi 全局替换命令等
  8. Typora基本使用方法
  9. vc 获取月份的天数_C语言计算两个日期之间的天数
  10. OpenEuler安装Kubernetes+KubeSphere教程