目录
一定要跳出循环的条件:
1、一直循环的次数 (来10个新人 新建10 账号)
2、未知循环的次数,但是有一个跳出条件( 女朋友生气, 道歉 道到原谅)
for (已知次数)
while 成功执行
until 条件不成功执行 ( 限定条件 )
一、for循环语句
列表循环:
循环列表 只和你循环的额次数有关
循环列表有 6个值 那就循环6次
表现形式:
{1..10}
{1..100}
{0..100..2} 从0开始到100结束,每次加2 步长为2 打印的都是偶数
{1..100..2} 从0开始到100结束,每次加2 步长为2 打印的都是奇数
seq
调用 seq的命令执行结果 1到10seq 0 2 10 偶数
seq 1 2 10 奇数
语法:
for 变量名 in {列表}
do
命令序列
done
范例:
例子1:求和
#!/bin/bash
sum=0
i=0for i in {1..100}
do
sum=$[sum+i]
done
echo $sum1、创建与运行脚本
2、脚本配置
例子2:将某文件夹下的所有txt文件后缀改为bak
#!/bin/bash
for i in *.txt
do
pre=`echo $i|cut -d"." -f1`
mv $i ${pre}.bak
done实验环境创建
1、创建与运行脚本
2、脚本配置
例子:九九乘法表
#!/bin/bash
for j in {1..9}
do
for i in `seq $j`
do
echo -e "${i}*${j}=$[i*j]\t\c"
done
echo
done1、创建与运行脚本
2、脚本配置
例子:在/date目录下的name.txt文件中 批量添加用户
#!/bin/bash
for i in `cat /date/name.txt`
do
id $i &>/dev/null
if
[ $? -eq 0 ]
then
echo "$i 已存在"
continue
fi
useradd $i
echo 123123 |passwd $i --stdin
done实验环境准备
1、创建与运行脚本
2、脚本配置
例子:根据IP地址 检查主机是否存活,
并将存活的主机放入一个文件夹中,
不存活的主机放在另一个文件中
#!/bin/bash
ip=192.168.134.for i in {1..254}
do
{
ping -c1 -w1 ${ip}${i} &>/dev/null
if [ $? -eq 0 ]
then
echo ${ip}${i} >> /date/hoston
else
echo ${ip}${i} >> /date/hostoff
fi
} &
done1、创建与运行脚本
2、脚本配置
for的第二种格式:for(( 表达式1;表达式2;表达式3))
do
命令序列
done表达式1
表达式2 是一个判断,如果满足表达式2 才执行
表达式3
范例:
例子1:求和
#!/bin/bash
sum=0
i=0
for((i=0;i<=100;i++))
do
let sum+=i
done
echo sum=$sum1、创建与运行脚本
2、脚本配置
例子2:九九乘法表
#!/bin/bash
for((j=1;j<=9;j++))
do
for((i=1;i<=j;i++))
do
echo -e "${i}*${j}=$[i*j]\t\c"
done
echo
done1、创建与运行脚本
2、脚本配置
二、while循环语句
相对于for,需要知道循环次数我们只知道停止条件,不知道次数,就需要使用while直到达到条件
语法:
while 判断条件 条件成立 继续 循环条件不成立 跳出循环
do
命令序列
done
范例:
例子1:求和
#!/bin/bash
i=0
sum=0while [ $i -le 100 ]
do
sum=$[sum+i]
let i++
doneecho sum=$sum
1、创建与运行脚本
2、脚本配置
例子2:猜价格
#!/bin/bash
m=`echo $[RANDOM%1000+1]`
t=0while 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
done1、编辑脚本
2、配置脚本
3、运行脚本
例子3:检测http是否正常运行
#!/bin/bash
while ss -natp l grep httpd&>/dev/null
doecho "httpd 正常运行"
sleep 3
done
echo "httpd 运行不正常"
1、脚本创建与运行2、配置脚本
三、until循环语句
范例:
例子1:求和(待修订)
#!/bin/bash
sum=0
i=0
until [ $i -gt 100 ]
do
let sum=$i+$sum
let i++
done
echo sum=$sum
四、双重循环及跳出循环
break跳出单个循环 break n 数字数字是几代表跳出n层循环
continue终止某次循环中的命令,但是不会完全终止命令
exit 直接退出脚本
单层循环
例子:continue 跳过某个循环,
#!/bin/bash
for i in {1..10}
do
if [ $i -eq 5 ]
then
continue
fi
echo i=$i
done1、编辑脚本
2、配置脚本
3、运行脚本
例子:break 单层循环内到了某个循环 直接终止
#!/bin/bash
for i in {1..10}
do
if [ $i -eq 5 ]
then
break
fi
echo i=$i
done1、编辑脚本
2、配置脚本
3、运行脚本
例子:exit 到了某个循环直接退出脚本,在单层循环内与 break 效果相同。
#!/bin/bash
for i in {1..10}
do
if [ $i -eq 5 ]
then
exit
fi
echo i=$i
done1、编辑脚本
2、配置脚本
3、运行脚本
双重循环(break 与 exit )
例子:break 本层循环 到某次就会结束,但外层循环继续运行不会终止
#!/bin/bash
for j in {1..10}
do
for i in {1..10}
do
if [ $i -eq 5 ]
then
break
fi
echo i=$i
done
echo --------------------
done1、编辑脚本
2、配置脚本
3、运行脚本
例子:exit 任然是到了某个循环直接退出脚本运行
#!/bin/bash
for j in {1..10}
do
for i in {1..10}
do
if [ $i -eq 5 ]
then
exit
fi
echo i=$i
done
echo --------------------
done1、编辑脚本
2、配置脚本
3、运行脚本