目录标题
for语句
for循环的两种形式:
第一种:c语言风格的for循环
for((exp1;exp2;exp3))
do
statements
done
说明:exp1、exp2、exp3是三个表达式,其中exp2是判断条件,for循环根据exp2的结果来决定是否继续下一次循环;statements是循环体语句,可以有一条,也可以有多条;do和done是shell中的关键字。
运行过程:先执行exp1再执行exp2,如果它的判断结果是成立的,则执行循环体中的语句,否则结束整个for循环;执行万循环体之后再执行exp3,重复执行步骤2)和3),直到exp2的判断结果不成立,就结束循环。上面的步骤中,2)和3)合并在一起算作一次循环,会重复执行,for语句的主要作用就是不断执行步骤2)和3)。
exp1仅在第一次循环时执行,以后都不会再执行,可以认为这是一个初始化语句。exp2一般是一个关系表达式,决定了是否还要继续下次循环,成为“循环条件”。exp3很多情况下是一个带有自增或自减运算的表达式,以使循环条件逐渐变得”不成立”。for循环中exp1(初始化语句)、exp2(判断条件)和exp3(自增或自减)都是可选项,都可以省略(但分号;必须保留)。
#!/bin/bash
sum=0
for ((i=1;i<=100;i++))
do
((sum+=i))
done
echo "sum=$sum"
结果:
sum=5050
#!/bin/bash
sum=0
for ((i=1; ;i++))
do
if ((i>100));then
break
fi
((sum+=i))
done
echo "the sum is ;$sum"
结果:
the sum is ;5050
#!/bin/bash
sum=0
i=1
for ((; ;))
do
if ((i>100));then
break
fi
((sum+=i))
((i++))
done
echo "the sum is:$sum"
结果:
the sum is:5050
第二种for的表达方式
# python风格的for in 循环的用法:
for variable in value_list
do
statements
done
variable表示变量,value_list表示取值列表,in是shell中的关键字。
运行过程:每次循环都会从value_list中取出一个值赋给变量variable,然后进入循环体(do和done之间的部分),执行循环体中的statements。直到取完value_list中的所有值,循环就结束了。
#!/bin/bash
sum=0
for n in 1 2 3 4 5 6
do
echo $n
((sum+=n))
done
echo "the sum is $sum"
结果:
1
2
3
4
5
6
the sum is 21
#!/bin/bash
# 给出一个取值范围{1..100}
# 注意:中间用两个点号链接
# start:起始值 end:终止值
# 这种形式只支持数字和字母
sum=0
for n in {1..100}
do
((sum+=n))
done
echo "sum=$sum"
结果:
sum=5050
#!/bin/bash
for c in {A..z}
do
printf "%c"$c
done
结果:
ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz
#!/bin/bash
# 根据命令的执行结果
# 反引号``或者$()
# seq是一个linux命令用来产生某个范围内的整数并且可以设置步长
sum=0
for n in $(seq 2 2 10)
do
((sum+=n))
done
echo "sum=$sum"
结果:
sum=30
#!/bin/bash
for filename in $(ls *.sh)
do
echo $filename
done
结果:
01.sh
02.sh
03.sh
04.sh
05.sh
06.sh
07.sh
08.sh
#!/bin/bash
# 可以使用通配符
for filename in *.sh
do
echo $filename
done
结果:
01.sh
02.sh
03.sh
04.sh
05.sh
06.sh
07.sh
08.sh
09.sh
#!/bin/bash
# 使用特殊符号
# $@表示参数列表中的所有参数
function func(){
for str in $@
do
echo $str
done
}
func c++ python ruby shell
结果:
c++
python
ruby
shell
# 使用特殊符号
# $@表示参数列表中的所有参数
function func(){
for str
do
echo $str
done
}
func c++ python ruby shell
结果:
c++
python
ruby
shell