目录
实例1:将某文件夹下的所有.txt文档 后缀 改成 .bak
四.循环语句中的break、exit和continue的使用
一、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