Shell ❀ 循环语句
Posted 无糖可乐没有灵魂
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell ❀ 循环语句相关的知识,希望对你有一定的参考价值。
文章目录
五、循环语句
1、for 循环
for
循环是编程语句中非常常见的一种循环,以列表为范围遍历其中变量,进行运算或执行某些命令以达到某些要求;for
循环主要分为三种类型:带列表的for
循环、不带列表的for
循环、类C风格的for
循环;
1.1 带列表的for循环
for variable in list #遍历列表中的变量
do #循环开始标识
statement1 #变量的声明1
statement2 #变量的声明2
...
done
此语法中,variable
称为循环变量,list
是一个列表,可以是一系列的数字或者字符串,元素直接使用空格间隔,do
和done
之家的语句称为循环体,即循环结果中重复执行的语句内容,for
循环的循环次数与list
元素的个数有关。
[root@localhost shell]# cat IP.sh
#!/bin/bash
for IP in 192.168.1.101 192.168.1.102
#for IP in 192.168.1.1..10
#for IP in $(seq -f "192.168.1.10%1g" 1 5)
#通过不同的遍历方式可以实现以固定步长增加数值
do
echo $IP
done
[root@localhost shell]# sh a11.sh
192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4
192.168.1.5
192.168.1.6
192.168.1.7
192.168.1.8
192.168.1.9
192.168.1.10
1.2 不带列表的for循环
for variable
do
statement1
statement2
...
done
当循环代码块内不带list
列表时,需要在调用脚本时定义遍历内容,否则产生报错;
[root@localhost shell]# cat a11.sh
#!/bin/bash
for IP
do
echo 192.168.1.$IP
done
[root@localhost shell]# ./a11.sh 1..10
192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4
192.168.1.5
192.168.1.6
192.168.1.7
192.168.1.8
192.168.1.9
192.168.1.10
1.3 类C风格的for循环
for ((expression1;expression2;expression3))
do
statement1;
statement2;
...
done
此代码块中通过不同的运算符定义了不同的变量范围区间,以此为列表进行遍历;
[root@localhost shell]# cat ip_addr.sh
#!/bin/bash
for ((i=1;i<=254;i++))
#变量i首先赋值为1,步长为1进行递增,其值小于等于254
do
if ping -c 2 -w 1 192.168.1.$i &> /dev/null
then
echo "192.168.1.$i is up!!"
else
echo "192.168.1.$i is down!!"
fi
done
2、while 循环
while
循环是另外一种常见的循环结构,使用while
循环,可以使得用户重复执行一系列的操作,直到某个条件的发生。
while expression #当前的条件表达式
do
statement1 #满足条件时的声明1
statement2 #满足条件时的声明2
done
2.1 循环体读取文件的三种方法
循环中若想引入文件内容,主要分为三种引入方法:采用exec
命令读取文件、采用cat
命令读取文件、采用输入重定向读取文件;
- 使用
exec
命令读取文件
exec < file
while read line
do
statement
done
- 使用
cat
命令读取文件
cat file | while read line
do
statement
done
- 使用输入重定向读取文件
while read line
do
statement
done < file
2.2 循环类型
while
循环主要用于重复循环,主要分为三种类型:随机数循环、until
循环、select
循环;
- 随机数循环:产生随机数,比较输入值与随机数的大小,相同则结束程序。
[root@localhost shell]# cat RANDOM.sh
#!/bin/bash
PRICE=$[$RANDOM % 100]
TIMES=0
while true
do
read -p "Please enter your number:" INT
let TIMES++
if [ $INT -eq $PRICE ]
then
echo "is lucking,you bingo it!"
echo "is $TIMES times!"
exit 100
elif [ $INT -gt $PRICE ]
then
echo "$INT is too high"
else
echo "$INT is too low"
fi
done
until
循环
until expression
do
statement1
statement2
...
done
select
循环
select 变量名 [ in 菜单值列表 ]
do
statement1
statement2
...
done
3、嵌套循环案例
- 打印9x9乘法表
[root@localhost shell]# cat 9_9.sh
#!/bin/bash
for i in 1..9
do
for j in 1..9
do
[ $j -le $i ] && echo -n "$i*$j=`echo $(($i*$j))` "
done
echo " "
done
以上是关于Shell ❀ 循环语句的主要内容,如果未能解决你的问题,请参考以下文章
Shell编程Shell中for循环while循环until循环语句