shell编程的三种循环(for,while,until)详解,及其应用案例思路分析

您所在的位置:网站首页 if语句结构图 shell编程的三种循环(for,while,until)详解,及其应用案例思路分析

shell编程的三种循环(for,while,until)详解,及其应用案例思路分析

2023-03-24 20:10| 来源: 网络整理| 查看: 265

本文共 2832 字,大约阅读时间需要 9 分钟。

目录

一. for循环 1.1 for循环的语法格式 1.11 列表循环

列表for循环:用于将一组命令执行已知的次数 基本语法格式:

for value in {    list}  docommandcommand  done  或者for value in a b c   do command1command2  done

注意事项: 在这里插入图片描述

在这里插入图片描述

1.12 类C风格的for循环

基本语法结构

for ((expr1;expr2;expr3))do  commanddone例:for ((i=1;i /dev/nulldone 1.53 局域网内脚本检查主机网络通讯 1.需求:

写一个脚本,局域网内,把能ping通的IP和不能ping通的IP分类,并保存到两个文本文件里,以10.1.1.1-10.1.1.10

2.落地实现 #!/bin/bash#定义变量ip=10.1.1#循环去ping主机的IPfor i  in {    1..10}do  ping -c 3 $ip.$i &> /dev/null  if [ $? -eq 0 ];then  echo "$ip.$i is ok" > /opt/ip_up.txt  else  echo "$ip.$i is down" > /opt/ip_down.txt  fi done 二. while循环语句

特点:条件为真就进入循环,条件为假就退出循环

2.1 while 循环语法格式

1.while循环的语法格式

while 表达式  do  command  donewhile [ 1 -eq 1 ] 或者(( 1 = 1 ))  docommandcommand  done 2.2 while循环的应用实例 2.21 while循环脚本同步时间 1.具体需求

1.写一个脚本,30秒同步一次系统时间,时间同步服务器为ntp1.aliyun.com 2.如果同步失败,则进行邮件报警,每次失败都报警 3.同步成功,也进行邮件通知,但是成功100次才通知一次

2.思路

1.每隔30秒同步一次时间,改脚本是一个死循环 2.同步失败发送邮件(ntpdate 20.0.0.26;rate -s 20.0.0.26) 3.同步成功100次发送邮件(定义一个变量保存成功的次数)

3.实现脚本 #!/bin/bash#改脚本用于时间同步NTP=ntp1.aliyun.comcount=0while truedo  ntpdate $NTP &> /dev/null  if [ $? -ne 0 ];thenecho "系统同步时间失败" | mail -s "需要检查系统同步时间" root@localhost  else   let count++ if [ $count -eq 100 ];then   echo "时间同步成功" | mail -s "时间同步没有问题" root@localhost fi  fisleep 30done 三. until语句结构

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

3.1 until语句的语法格式 until 条件测试操作do  命令序列done 3.2 until语法结构流程图

在这里插入图片描述

3.3 until语句的应用实例 1.具体需求

1)使用until语句批量创建10个用户,要求stu1-stu5用户的UID分别为1001-1005; 2)stu6-stu10用户的家目录分别在/rhome/stu6-/rhome/stu10

2.思路

1)创建用户语句:useradd -u | useradd -d 2)使用循环语句(until)批量创建用户 3)判断用户前5个和后5个,条件判断语句

3.落地实现 if [ -d /rhome ];then  echo "/rhome目录已存在"else  mkdir /rhome && echo "/rhome不存在,已完成创建"fii=1 until [ $i -gt 5 ]do  useradd stu$i -u $[1000+$i]  echo 123 | passwd --stdin stu$i  let i++doneuntil [ $i -gt 10 ]do  useradd stu$i -d /rhome/stu$i  echo 123 | passwd --stdin stu$i  let i++done

转载地址:https://blog.csdn.net/weixin_48192495/article/details/108156601 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3