shell脚本系列:两种风格的for循环
C语言风格
格式
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"
修改“从 1 加到 100 的和”的代码,省略 exp1:
#!/bin/bash
sum=0
i=1
for ((; i<=100; i++))
do
((sum += i))
done
echo "The sum is: $sum"
省略 exp2,就没有了判断条件,如果不作其他处理就会成为死循环,我们可以在循环体内部使用 break 关键字强制结束循环:
#!/bin/bash
sum=0
for ((i=1; ; i++))
do
if(( i>100 )); then
break
fi
((sum += i))
done
echo "The sum is: $sum"
省略了 exp3,就不会修改 exp2 中的变量,这时可在循环体中加入修改变量的语句。例如:
#!/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"
Python风格
格式
for variable in value_list
do
statements
done
示例
#!/bin/bash
sum=0
for n in 1 2 3 4 5 6
do
echo $n
((sum+=n))
done
echo "The sum is "$sum
直接给出具体的值:
#!/bin/bash
for str in "杰克" "汤姆" "爱丽丝" "亨瑞"
do
echo $str
done
给出一个取值范围:
#!/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
使用命令的执行结果:
#!/bin/bash
sum=0
for n in $(seq 2 2 100)
do
((sum+=n))
done
echo $sum
#!/bin/bash
for filename in $(ls *.sh)
do
echo $filename
done
使用 Shell 通配符:
#!/bin/bash
for filename in *.sh
do
echo $filename
done
使用特殊变量:
#!/bin/bash
function func() {
for str in $@
do
echo $str
done
}
func 小刘 小张 小宋