0


22.shell语言之for循环、while循环、until循环、exit、break、continue语句

📋 个人简介
💖 作者简介:大家好,我是小鹏linux,运维领域新星创作者。😜
📝 个人主页:小鹏linux🔥
🎉 支持我:点赞👍+收藏⭐️+留言📝
💬格言:你未必出类拔萃,但一定与众不同!🔥
📕 系列专栏:
🍎 阶段一:windows基础 目前原创16篇
🍎 阶段二:Linux基础知识 目前原创38篇
🍎 阶段三:shell基础+shell高级 目前原创22篇
🍎 阶段四:python基础及自动化应用 原创未开始
🍎 阶段五:Linux网络服务 原创未开始
🍎 阶段六:集群原理及架构 原创未开始
🍎 阶段七:云计算虚拟化技术 原创未开始

1.for循环**语句 **

**1.1带列表循环 **

  1. for 变量 in 1 2 3 .....
  2. do
  3. 程序
  4. done

**1.2类C的for循环 **

  1. for ((初始值;循环控制条件;变量变化))
  2. do
  3. 程序
  4. done

**1.3举例:批量解压缩 **

  1. [root@xiaopeng ~]# cat auto-tar.sh
  2. #!/bin/bash
  3. cd /lamp
  4. ls *.tar.gz > ls.log
  5. for i in $(cat ls.log)
  6. do
  7. tar -xvf $i &> /dev/null
  8. done
  9. rm -rf /lamp/ls.log

脚本编写完成后,给脚本执行权限。光盘换成lamp,创建/lamp,把lamp中的内容复制到/lamp中。

**1.4举例:从1加到100 **

  1. [root@xiaopeng ~]# cat for-1-100.sh
  2. #!/bin/bash
  3. s=0
  4. for ((i=1; i<=100; i=i+1))
  5. do
  6. s=$(($s+$i))
  7. done
  8. echo "$s"

**1.5举例:批量添加指定数量的用户 **

  1. [root@xiaopeng ~]# cat useradd.sh
  2. #!/bin/bash
  3. # 批量添加指定数量的用户
  4. # 创建用户默认名
  5. # 创建默认密码。
  6. read -p "Please input user name:" -t 30 name
  7. read -p "Please input the number of users:" -t 30 num
  8. read -p "Please input the password of users:" -t 30 pass
  9. if [ ! -z "$name" -a ! -z "$num" -a ! -z "$pass" ]
  10. then
  11. y=$(echo $num | sed 's/[0-9]//g')if [ -z "$y"]
  12. then
  13. for (( i=1;i<=$num;i=i+1))
  14. do
  15. /usr/sbin/useradd $name$i &> /dev/null
  16. echo $pass | /usr/bin/passwd --stdin $name$i &> /dev/null
  17. done
  18. fi
  19. fi

**1.6举例:批量删除用户 **

  1. [root@xiaopeng ~]# cat userdel.sh
  2. #!/bin/bash
  3. ls /home/ > /tmp/user.txt
  4. user=$(cat /tmp/user.txt)
  5. for i in $user
  6. do
  7. userdel -r $i
  8. done
  9. rm -rf /tmp/user.txt

*2.while循环语句*** **

对while循环来讲,只要条件判断式成立,循环就会一直继续,直到条件判断式不成立循环才会停止。

  1. while [ 条件判断式 ]
  2. do
  3. 程序
  4. done

**2.1举例:从1加到100 **** **

  1. [root@xiaopengt ~]# cat while.sh#!/bin/bash
  2. i=1
  3. s=0
  4. while [ $i -le 100 ]
  5. do
  6. s=$(( $s+$i))
  7. i=$(( $i+1))
  8. done
  9. echo "the sum si:$s"

2.2while另一种格式****,死循环

  1. while true
  2. do
  3. command
  4. done

2.3举例:****循环监测apache

  1. [root@xiaopeng ~]# cat autostart.sh
  2. #!/bin/bash
  3. while true
  4. do
  5. port=$(nmap -sT 192.168.22.222 | grep tcp | grep http | awk '{print $2}')
  6. if [ "$port" == "open" ]
  7. then
  8. echo "$(date) httpd is ok!" >> /tmp/autostart-acc.log
  9. else
  10. /etc/rc.d/init.d/httpd start &> /dev/null
  11. echo "$(date) restart httpd!!" >> /tmp/autostart-err.log
  12. fi
  13. sleep 5 #检测的间隔时间为5秒。
  14. done

**3.****until循环 **

until循环和while循环相反

**4.**exit语句

遇到exit语句的时候脚本直接结束。

1)系统是有exit命令的,用于退出当前用户的登录状态

2)在shell脚本中,exit语句是用来退出当前脚本的。也就是说在shell脚本中,只要碰到exit语句,后续的程序就不再执行,而直接退出脚本。

exit语法:

exit [返回值]

#返回值可以通过$?来查看返回值,范围是0-255。如果exit之后没有定义返回值,脚本执行之后的返回值是执行exit之前,最后执行一条命令的返回值

**5.****break语句 **

遇到break语句的时候循环从当前终止,但不影响脚本内其他语句

5.1举例:break语句

  1. [root@xiaopeng ~]# cat break.sh
  2. #!/bin/bash
  3. for ((i=1; i<=10; i=i+1 ))
  4. do
  5. if [ "$i" -eq 4 ]
  6. then
  7. break
  8. fi
  9. echo $i
  10. done
  11. [root@xiaopeng ~]# . break.sh
  12. 1
  13. 2
  14. 3
  15. [root@xiaopeng ~]#

**6.****continue语句 **

遇到break语句的时候结束当前循环,但是下一次循环照常运行

continue只会退出当次循环,所以并不影响后续的循环,结果就是只会少4的输出。

喜欢的请来个三连支持一下吧,谢谢谢谢!!!

您的支持是我最大的动力!!!

标签: bash linux 运维

本文转载自: https://blog.csdn.net/weixin_46659843/article/details/124163674
版权归原作者 小鹏linux 所有, 如有侵权,请联系我们删除。

“22.shell语言之for循环、while循环、until循环、exit、break、continue语句”的评论:

还没有评论