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++