shell脚本——第三章 循环语句for、while、until以及如何跳出循环的三种方式

目录

一、for循环

1.1循环场景

1.2 类c语言格式

1.3 for循环的应用

实例1:将某文件夹下的所有.txt文档 后缀 改成 .bak

实例2:打印九九乘法表

实例3:批量创建用户

实例4:检测一整个网段的ip地址 主机是否存活

二、while循环

while 循环的应用

  实例1:快捷批量建立用户

实例2:猜商品价格小游戏

三、until:条件不成功执行(限定条件)

例子:#1加到100的和

四.循环语句中的break、exit和continue的使用

4.1 break的使用

4.2 continue的使用

4.3 exit的使用


一、for循环

1.1循环场景

用于已知循环次数的场景

标准格式:
for  i   in   取值列表
do
命令序列
done

循环列表只是跟循环的次数有关

如果循环列表有6个值,循环6次

循环列表的 表达形式

{1..10}

{1..100}

{0..100..2} 从0开始到100结束,每次加2 步长为2 打印的都是偶数

{1..100..2} 从1开始到100结束,每次加2 步长为2 打印的都是奇数

简单for循环

#计算1加到100的和

#!/bin/bash
sum=0
i=0
for i in {1..100}
do
let sum+=i
done
echo $sum

#或者

sum=0
i=0
for i in {1..100}
do
sum=$[sum+i]
done
echo $sum

1.2 类c语言格式

for的第二种格式

for((表达式1;表达式2;表达式3));do命令;done

#计算从1到100的和

#!/bin/bash

sum=0

i=0

for((i=0;i<=100;i++))

do

let sum+=i

done

echo sum=$sum

1.3 for循环的应用

实例1:将某文件夹下的所有.txt文档 后缀 改成 .bak

#!/bin/bash

for i in *.txt
do
pre = `echo $i|cut -d "."  -f1`
mv $i  ${pre}.bak
done

实例2:打印九九乘法表

#!/bin/bash
for j in {1..9}
do
        for i in `seq $j`
        do
        echo -e "${i}*${j}=$[i*j] \t\c"
        #\t tab键可以对齐
        done
echo
done


或

for((i=1;i<=9;i++))
do
        for((j=1;j<=i;j++))
        do
        echo -e "${i}*${j}=$[i*j]\t\c"
        done
echo
done

实例3:批量创建用户

首先在data下创建name.txt ,在name.txt中添加用户

#!/bin/bash
for i in `cat /data/name.txt`
do
id $i &>/dev/null
if
[ $? -eq 0 ]
then
echo "$i 已存在"
continue
fi
useradd $i
echo 123123 | passwd $i --stdin
done

实例4:检测一整个网段的ip地址 主机是否存活

192.168.76.0   将存活的主机放在一个文件中,将不存活的主机放在另一个文件中

#!/bin/bash
ip=192.168.76.

for i in {1..254}

do
{
ping -c1 -W1 ${ip}${i} &>/dev/null
if [ $?  -eq 0 ]
then
echo ${ip}${i} >> /data/hoston
#将存活的IP地址添加到/data/hoston目录下
else
echo ${ip}${i} >> /data/hostoff
#将不存活的IP地址添加到/data/hosoff目录下
fi
} &
done

#bash -x 显示脚本执行过程

#存活的ip地址

#不存活的ip地址

二、while循环

while 判断条件 条件成立 继续循环 条件不成立 跳出循环

循环格式:

while 判断条件

do

命令序列

.....

done

#计算1加到100的和

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

while 循环的应用

  实例1:快捷批量建立用户

#!/bin/bash
i=1
while [ $i -le 5 ]
do
useradd stu$i
echo 123123 | passwd stu$i  --stdin
let i++
done

实例2:猜商品价格小游戏

#!/bin/bash
m=`echo $[RANDOM%1000+1]`   #随机生成一个1000以内的数
t=0              #次数t初始值为0

while true   #一直执行 
do
read -p "请输入猜的价格(1-1000内的整数):" h
let t++
if [ $h -eq $m ]
then
echo "恭喜你猜对了 商品价格是 $h 您一共猜了 $t 次"
exit
elif [ $h -gt $m ]
then
echo "您的价格猜高了"
else
echo "您的价格猜低了"
fi
done

三、until:条件不成功执行(限定条件)

格式:

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

例子:#1加到100的和

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

四.循环语句中的break、exit和continue的使用

4.1 break的使用

break跳出单个循环 break n 数字数字是几代表跳出n层循环

#!/bin/bash
for i in {1..10}
do
if [ $i -eq 5 ]
then break
fi
echo i=$i
done

4.2 continue的使用

continue终止某次循环中的命令,但是不会完全终止命令

#!/bin/bash
for i in {1..10}
do
if [ $i -eq 5 ]
then continue
fi
echo i=$i
done

4.3 exit的使用

exit 直接退出脚本

#!/bin/bash
for i in {1..10}
do
if [ $i -eq 5 ]
then exit
fi
echo i=$i
done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值