shell脚本学习(十三)——for循环语句

1 C语言风格的for循环

格式如下:

for ((exp1;exp2;exp3))
do
	statements
done

运行过程:
1)先执行exp1;
2 )再执行exp2,如果它的判断结果成立,则执行循化体中的语句,否则结束整个for循环;
3)执行完循环体后再执行exp3;
4)重复执行步骤2)和3),直到exp2的判断结果不成立,就结束循环。
上面的步骤中,第二步和第三步合并在一起算一次循环,会重复执行。for语句的主要作用就是不断执行步骤2)和3)

注意:
1)exp1仅在第一次循环时执行,以后都不会再执行。可以认为这是一个初始化语句
2)exp2一般是一个关系表达式,决定了是否有还要继续下次循环,称为“循化条件”
3)exp3很多情况下是一个带有自增或自减运算的表达式,以使循环条件逐渐变得“不成立”
4)for循环中的exp1、exp2、exp3都是可选项,都可以省略,但分号必须保留。

格式:

for ((初始化语句;判断条件;自增或自减))

示例一:计算1到100的和

#!/bin/bash

sum=0
for ((i=1;i<=100;i++))
do
	((sum += i))
done
echo "The sum is $sum"

变形一:省略初始化条件

#!/bin/bash
i=1				#把初始化条件提前写在for语句前面	
sum=0
for ((;i<=100;i++))	#即使省略了exp1,它后面的分号仍然需要保留
do
	((sum += i))
done
echo "The sum is $sum"

变形二:省略判断条件

#!/bin/bash

sum=0
for ((i=1;;i++))		#分号不能省略
do
	if ((i>100));then	#把判断条件写成if语句在for循环体中
		break
	fi
	((sum += i))
done
echo "The sum is $sum"

变形三:省略自增或自减

#!/bin/bash

sum=0
for ((i=1;i<=100;))
do
	((sum += i))
	((i++))		#把自增或自减写进循环体中
done
echo "The sum is $sum"

变形四:全部省略

#!/bin/bash
i=1
sum=0
for ((;;))
do
	if ((i>100));then
		break
	fi
	((sum += i))
	((i++))
done
echo "The sum is $sum"

在这里插入图片描述

2 python风格的for in循环

格式:

for variable in value_list
do
	statements
done

其中variable表示变量,value_list表示取值列表

运行过程:
每次循环都会从value_list中取出一个值赋给变量variable,然后进入循环体,执行循环中的statements,直到取完value_list中的所有值,循环结束。

示例一:value_list:直接给出具体的值

#!/bin/bash

sum=0
for n in 1 3 5 7 9
do
	echo $n
	((sum+=n))
done

echo "The sum is $sum"

在这里插入图片描述
示例二:value_list:直接给出具体的值

#!/bin/bash
#value_list:直接给出具体的值

for str in "hello" "world" "hello world"
do
	echo $str
done

在这里插入图片描述
示例三:value_list:给出一个取值范围

#!/bin/bash
#value_list:给出一个取值范围 {start...end}
# start:起始值 end:终止值
# 注意:中间用两个点相连
# 注意:这种形式只支持数字和字母

sum=0
for i in {1..100}
do
	((sum+=i))
done

echo "The sum is $sum"

在这里插入图片描述
示例四:value_list:给出一个取值范围

#!/bin/bash
for c in {A..z}
do
	printf "%c" $c
done

在这里插入图片描述
示例五:value_list:根据命令的执行结果

#!/bin/bash
# 根据命令的执行结果
# 获取命令执行结果:反引号`` 或者$()

# 计算1到100之间所有奇数的和

sum=0
for i in $(seq 1 2 100)	#seq是一个linux命令 用来产生某个范围内的整数 并且可以设置步长
do
	((sum+=i))
done
echo $sum

在这里插入图片描述
示例六:value_list:命令的结果

#!/bin/bash
#value_list:命令的结果
for filename in $(ls *.sh)
do
	echo $filename
done

在这里插入图片描述
示例七:value_list:可以使用通配符

#!/bin/bash
# 可以使用通配符

for filename in *.sh
do
	echo $filename
done

在这里插入图片描述
示例八:value_list:可以使用特殊符号

#!/bin/bash
# 可以使用特殊符号
# $@ 表示参数列表中所有参数

function func() {
	for str in $@
	do 
		echo $str
	done
}

func shell python java c++

在这里插入图片描述
示例九:value_list可以省略

#!/bin/bash
# 可以使用特殊符号
# $@ 表示参数列表中所有参数

function func() {
	for str	#这里的value_list可以省略
	do 
		echo $str
	done
}

func shell python java c++

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值