Shell-编程之循环语句
循环语句作用(意义)
在实际工作中,经常会遇到某项任务需要多次执行的情况,而每次执行时仅仅是处理的对象不一样,其他命令相同。例如,根据通讯录中的姓名列表创建系统账号,根据服务器清单检查各主机的存活状态,根据 IP 地址黑名单设置拒绝访问的防火墙策略等。
当面对各种列表重复任务时,使用简单的 if 语句已经难以满足要求,而顺序编写全部代码更是显得异常烦琐、困难重重。循环语句,可以很好地解决类似问题。
一、for循环
1、for语句结构
读取不同的变量值,用来逐个执行同一组命令
for 变量名 in 取值列表
do
命令序列
done
2、实例
①计算从1到100所有整数的和
a=0
for (( i>=1;i<=100;i++))
do
a=$[$i+$a]
done
echo $a
②用for循环做99乘法表
#!/bin/bash
#for循环99乘法表
for (( a=1;a<=9;a++ ))
do
for (( b=1;b<=$a;b++ ))
do
c=$[$a*$b]
echo -n -e "$b*$a=$c\t"
done
echo ""
done
二、while循环
只要条件成立,则反复循环,不成立即停止
1、while语句结构
while 条件测试操作
do
命令序列
done
2、实例
①计算从1到100所有整数的和
#!/bin/bash
a=0
i=1
while [ $i -le 100 ]
do
a=$[$i + $a]
let i++
done
echo $a
②用while循环做99乘法表
#!/bin/bash
#while循环99乘法表
a=0
while [ $a -lt 9 ]
do
let a++
b=0
while [ $b -lt $a ]
do
let b++
c=$[$a*$b]
echo -n -e "$b*$a=$c\t"
done
echo ""
done
三、until循环
重复测试某个条件,只要条件不成立则反复循环
1、until语句结构
until 条件测试操作
do
命令序列
done
实例
计算从1到100所有整数的和
#!/bin/bash
a=0
i=1
until [ $i -gt 100 ]
do
a=$[$i + $a]
let i++
done
echo $a
四、实例:猜大小游戏
输入一个数值猜大小
#!/bin/bash
price=$[$RANDOM % 1000]
a=0
b=0
echo "猜猜商品价格是多少"
while [ $a = 0 ]
do
let b++
read -p "请输入你猜的价格:" c
if [ $c = $price ];then
echo "恭喜你猜对了!"
echo "你总共猜了 $b 次"
let a++
elif [ $c -lt $price ];then
echo "猜小了,重新输入价格!"
elif [ $c -gt $price ];then
echo "猜大了,重新输入价格!"
fi
done