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是一个列表,可以是一系列的数字或者字符串,元素直接使用空格间隔,dodone之家的语句称为循环体,即循环结果中重复执行的语句内容,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、嵌套循环案例

  1. 打印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循环语句

shell之循环语句

shell编程之case分支语句,for循环语句和while循环语句

shell编程之流程控制-循环语句

Shell脚本入门 05:选择与循环语句

Shell脚本入门 05:选择与循环语句