for((exp1; exp2; exp3))
do
statements
done
#!/bin/bash
sum=0
for ((i=1; i<=100; i++))
do
((sum += i))
done
echo "The sum is: $sum"
运行结果:
for(( 初始化语句; 判断条件; 自增或自减 ))
do
statements
done
;必须保留)。
#!/bin/bash
sum=0
i=1
for ((; i<=100; i++))
do
((sum += i))
done
echo "The sum is: $sum"
可以看到,将i=1移到了 for 循环的外面。
#!/bin/bash
sum=0
for ((i=1; ; i++))
do
if(( i>100 )); then
break
fi
((sum += i))
done
echo "The sum is: $sum"
break 是 Shell 中的关键字,专门用来结束循环,后续章节还会深入讲解。
#!/bin/bash
sum=0
for ((i=1; i<=100; ))
do
((sum += i))
((i++))
done
echo "The sum is: $sum"
#!/bin/bash
sum=0
i=0
for (( ; ; ))
do
if(( i>100 )); then
break
fi
((sum += i))
((i++))
done
echo "The sum is: $sum"
这种写法并没有什么实际意义,仅仅是为了给大家做演示。
for variable in value_list
do
statements
done
每次循环都会从 value_list 中取出一个值赋给变量 variable,然后进入循环体(do 和 done 之间的部分),执行循环体中的 statements。直到取完 value_list 中的所有值,循环就结束了。in value_list 部分可以省略,省略后的效果相当于 in $@,本文末尾的「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、"abc" "390" "tom"等。
#!/bin/bash
for str in "C语言中文网" "http://c.biancheng.net/" "成立7年了" "日IP数万"
do
echo $str
done
运行结果:{start..end}
start 表示起始值,end 表示终止值;注意中间用两个点号相连,而不是三个点号。根据笔者的实测,这种形式只支持数字和字母。
#!/bin/bash
sum=0
for n in {1..100}
do
((sum+=n))
done
echo $sum
运行结果:
#!/bin/bash
for c in {A..z}
do
printf "%c" $c
done
输出结果:``或者$()都可以取得命令的执行结果,我们在《Shell变量》一节中已经进行了详细讲解,并对比了两者的优缺点。本节我们使用$()这种形式,因为它不容易产生混淆。
#!/bin/bash
sum=0
for n in $(seq 2 2 100)
do
((sum+=n))
done
echo $sum
运行结果:seq 2 2 100表示从 2 开始,每次增加 2,到 100 结束。
#!/bin/bash
for filename in $(ls *.sh)
do
echo $filename
done
运行结果:*.sh表示匹配后缀为.sh的文件,也就是 Shell 脚本文件。
#!/bin/bash
for filename in *.sh
do
echo $filename
done
运行结果:
#!/bin/bash
function func(){
for str in $@
do
echo $str
done
}
func C++ Java Python C#
运行结果:$@一样。请看下面的演示:
#!/bin/bash
function func(){
for str
do
echo $str
done
}
func C++ Java Python C#
运行结果:
版权说明:Copyright © 广州松河信息科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州松河信息科技有限公司 版权所有