shell中的for循环
1.C语言风格的for循环
格式:
for ((exp1;exp2;exp3))
do
statements
done
运行过程:
- 先执行exp1;
- 再执行exp2,如果它的判断结果成立,则执行循化体中的语句,否则结束整个for循环;
- 执行完循环体后再执行exp3;
- 重复执行步骤2和3,直到exp2的判断结果不成立,就结束循环;
- 上面的步骤中,第二步和第三步合并在一起算一次循环,会重复执行。for语句的主要作用就是不断执行步骤2和3-
注意:
1.exp1仅在第一次循环时执行,以后都不会再执行。可以认为这是一个初始化语句
2.exp2一般是一个关系表达式,决定了是否有还要继续下次循环,称为“循化条件”
3.exp3很多情况下是一个带有自增或自减运算的表达式,以使循环条件逐渐变得“不成立”
4.for循环中的exp1、exp2、exp3都是可选项,都可以省略,但分号必须保留!
for ((初始化语句;判断条件;自增或自减))
2.C语言风格for循环的例子
例1:计算1到100的和
#!/bin/bash
sum=0
for ((i=1;i<=100;i++))
do
((sum += i))
done
echo "The sum is $sum"
例2:省略初始化条件
#!/bin/bash
i=1 #把初始化条件提前写在for语句前面
sum=0
for ((;i<=100;i++)) #即使省略了exp1,它后面的分号仍然需要保留
do
((sum += i))
done
echo "The sum is $sum"
例3:省略判断条件
#!/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"
例4:省略自增或自减
#!/bin/bash
sum=0
for ((i=1;i<=100;))
do
((sum += i))
((i++)) #把自增或自减写进循环体中
done
echo "The sum is $sum"
例5:全部省略
#!/bin/bash
i=1
sum=0
for ((;;))
do
if ((i>100));then
break
fi
((sum += i))
((i++))
done
echo "The sum is $sum"
以上每段代码都是正确的,运行结果:
3.python风格的for in循环
格式:
for variable in value_list
do
statements
done
其中variable表示变量,value_list表示取值列表
循环过程:
每次循环都会从value_list中取出一个值赋给变量variable,然后进入循环体,执行循环中的statements,直到取完value_list中的所有值,循环结束
4.python风格for循环的例子
例1:value_list:直接给出具体的值
#!/bin/bash
sum=0
for n in 1 2 3 4 5
do
echo $n
((sum+=n))
done
echo "The sum is $sum"
例2:value_list:直接给出具体的值
#!/bin/bash
#value_list:直接给出具体的值
for str in "nigar" "hello,nigar" "www.nigar.com"
do
echo $str
done
例3:value_list:给出一个取值范围
value_list:给出一个取值范围 {start…end}
start:起始值 end:终止值
注意:中间用两个点相连
注意:这种形式只支持数字和字母
#!/bin/bash
#value_list:给出一个取值范围 {start..end}
# start:起始值 end:终止值
# 注意:中间用两个点相连
# 注意:这种形式只支持数字和字母
sum=0
for i in {1..100}
do
((sum+=i))
done
echo "The sum is $sum"
例4:value_list:给出一个取值范围
#!/bin/bash
for c in {A..z}
do
printf "%c" $c
done
例5:value_list:根据命令的执行结果
获取命令执行结果:反引号`` 或者$( )
#!/bin/bash
# 根据命令的执行结果
# 获取命令执行结果:反引号`` 或者$()
# 计算1到100之间所有奇数的和
sum=0
for i in $(seq 1 2 100) #seq是一个linux命令 用来产生某个范围内的整数 并且可以设置步长
do
((sum+=i))
done
echo $sum
例6:value_list:命令的结果
#!/bin/bash
#value_list:命令的结果
for filename in $(ls *.sh)
do
echo $filename
done
例7:value_list:可以使用通配符
#!/bin/bash
# 可以使用通配符
for filename in *.sh
do
echo $filename
done
例8:value_list:可以使用特殊符号
$@
表示参数列表中所有参数
#!/bin/bash
# 可以使用特殊符号
# $@ 表示参数列表中所有参数
function func() {
for str in $@
do
echo $str
done
}
func shell python java c++
例9:value_list可以省略
#!/bin/bash
# 可以使用特殊符号
# $@ 表示参数列表中所有参数
function func() {
for str #这里的value_list可以省略
do
echo $str
done
}
func shell python java c++
来源:CSDN
作者:_nigar
链接:https://blog.csdn.net/nigar_/article/details/104311860