目录
一、for循环
在实际工作中,经常会遇到某项任务需要多次执行的情况,而每次执行时仅仅是处理的 对象不一样,其他命令相同。例如,根据通讯录中的姓名列表创建系统账号,根据服务器清 单检查各主机的存活状态 当面对各种列表重复任务时,使用简单的 if 语句已经难以满足要求,而顺序编写全部代 码更是显得异常烦琐、困难重重
1.1、for的语句格式
第一种:for 变量名 in {list}
遍历
for 变量名 in {list}
do
command
done
例子:
#!/bin/bash
for i in {1..5} #{}里面不识别变量
do
echo $i
done
for i in `seq 5`
do
echo $i
done
附1小技巧:花括号{}和seq在for循环的应用:
for i in {1..50..2} 1-50的奇数
for i in {2..50..2} 1-50的偶数
for i in {10..1} 1-10倒序排列
for i in $(seq 10) 1-10正序排列
for i in $(seq 10 -1 1) 1-10倒序排列
for i in $(seq 1 2 10) 1-10的奇数,中间为步长
for i in $(seq 0 2 10) 1-10的偶数,中间为步长
第二种:for ((expr1;expr2;expr3))
for ((expr1;expr2;expr3))
do
command
done
expr1:定义变量并赋初值
expr2:决定是否循环
expr3:决定循环变量如何改变,决定循环什么时候退出
例子
#!/bin/bash
sum=0
for ((i=1;i<=100;i+=2))
do
let sum=$i+$sum
done
echo "1-100的奇数和为:$sum"
将for和if结合使用的例子
#!/bin/bash
a=$(($RANDOM%100+1))
num1=0
for ((i=0;i<=20;i++))
do
read -p "请输入猜的数字:" num
if [ $num1 -eq $num ]
then
echo "数字重复,重输入"
else
num1=$num
if [ $num -gt $a ]
then
echo "数大了"
elif [ $num -lt $a ]
then
echo "数小了"
elif [ $num -eq $a ]
then
echo "猜对了 猜了$(($i+1)) 次"
break
else
echo "请输入正确的数"
fi
fi
done
二、while语句
while [表达式]
while循环一般用于有条件判断的循环,若判断条件为真,则进入循环,当条件为假就跳出循环
while 表达式
do
command
done
例子
#!/bin/bash
i=1
while [ $i -le 5 ]
do
echo $i
let i++
done
输出1-100之间不能被3整除的数字
#!/bin/bash
i=1
while [ $i -le 100 ]
do
if [[ $i%3 -ne 0 ]]
then
echo "$i"
fi
let i++
done
while 死循环
#!/bin/bash
PRICE=$(expr $RANDOM % 1000)
a=0
echo "商品实际价格范围为 0-999,猜猜看是多少?"
while true do read -p "请输入你猜测的价格数目:" n
let a++
if [ $n -eq $PRICE ] ; then
echo "恭喜你答对了,实际价格是 $PRICE"
echo "你总共猜测了 $a 次"
exit 0
elif [ $n -gt $PRICE ] ; then
echo "你猜高了!"
else
echo "你猜低了!"
fi
done