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

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

一、for语句的结构

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

for 变量名 in 取值列表
do
  命令序列
done
for 收件人 in 邮件地址列表
do
  发送邮件
done

在这里插入图片描述

{1..10}

   $(seq 1 10)          #指连续的1到10 

((i=1;i<=10;i++))

在这里插入图片描述

{1..10..2}

$(seq 1 2 10)         #指1、3、5、7、9,1到10之间从1开始每个加2

((i=1;i<=10;i+=2))

在这里插入图片描述

(一)、for语句应用实例

1、示例1——批量添加用户

用户名存放在users.txt文件中,每行一个
初始密码均设为123456
验证脚本

#!/bin/bash   
chmod 777 users.txt
for user in `cat /root/users.txt
  do
     useradd $user  
     echo "用户$user 已创建"   
     echo "111111" | passwd --stdin $user


  done

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2、示例2——使用根据IP地址检查主机状态

  • IP地址存放在ip.txt文件中,每行一个
  • 使用ping命令检测各主机的连通性
#!/bin/bash
chmod 777 ip.txt
for i in `cat /root/ip.txt`
   do
    ping -c 3  $i &> /dev/null
   if [ $? -eq 0 ];then
      echo "$i host is up"
         else
            echo  "$i host is down"
   fi

  done

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3、示例3——for循环计算1-100奇数之和

#!/bin/bash
sum=0
for ((i=1;i<=100;i+=2))

do

   let sum=$sum+$i

done
   echo $sum

在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gwwRJpMY-1608366275194)(C:\Users\Chen\Desktop\9.png)]

二、while语句的结构

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

while 条件测试操作
do
    命令序列
done
while 未猜中正确价格
do
    反复猜测商品价格
done

在这里插入图片描述

(一)、while 语句应用实例

1、示例1——while循环计算(1-100整数和)

#!/bin/bash
sum=0
i=0
while [ $i -le 100 ]
  do
     let sum=$sum+$i
     let i++
  done
   echo $sum

在这里插入图片描述

在这里插入图片描述

2、示例2——while循环计算(1-100整数和)

#!/bin/bash
echo "没事来猜数玩"
a=$[$RANDOM % 1000]
b=0
c=0
while [ $b -lt  1  ]
   do
   read -p "请输入你要猜的数:  " d

    let c++
    if [ $d -lt $a ];then
     echo "你猜小了"
    
    let c++
     elif [ $d -gt $a ] ;then
    echo "你猜大了" 
    
    let c++
     elif [ $d -eq $a  ];then
     echo "恭喜你才对了,它的数是$a,你一共猜了$c次!!"
  c=2

    fi
    
      done

在这里插入图片描述

三、until语句的结构

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

until 条件测试操作
do
    命令序列
done

until 未超过10 
do
    数字依次递增
done

在这里插入图片描述

1、示例1——while循环计算(1-100整数和)

#!/bin/bash
sum=0
i=0
until  [ $i -gt 100 ]
  do
     let sum=$sum+$i
     let i++
  done
   echo $sum

在这里插入图片描述

四、echo的特殊用法

echo -n 表示不换行输出

echo -e 输出转义字符,将转义后的内容输出到屏幕上

常用的转义字符如下:
\b 转义后相当于按退格键(backspace),但前提是"\b"后面存在字符;"\b"表示删除前一个字符,"\b\b"表示删除前两个字符。

\c 不换行输出,在"\c"后面不存在字符的情况下,作用相当于 echo -n; 但是当"\c"后面仍然存在字符时,"\c"后面的字符将不会被输出。

\n 换行,被输出的字符从"\n"处开始另起一行。

\f 换行,但是换行后的新行的开头位置连接着上一行的行尾;

\v 与\f相同;

\t 转以后表示插入tab,即横向制表符;

\r 光标移至行首,但不换行,相当于使用"\r"以后的字符覆盖"\r"之前同等长度的字符;但是当"\r"后面不存在任何字符时,"\r"前面的字符不会被覆盖

\\ 表示插入"\"本身;

例:

[root@gcc ~]#echo -e "123\b456"

12456
[root@gcc ~]#echo -e "123\c456" 

123[root@gcc ~]#^C
[root@gcc ~]#echo -e "123\n456"

 123
 456
[root@gcc ~]#echo -e "123\f456" 

123   

​   456
[root@gcc ~]#echo -e "123\v456" 

123   

​    456
 [root@gcc ~]#echo -e "123\t456"

 123 456 
[root@gcc ~]#echo -e "123\r456" 

456 
[root@gcc ~]#echo -e "123\\456" 

123\456

猜你喜欢

转载自blog.csdn.net/weixin_51573771/article/details/111406674