shell编程——循环执行
原创
©著作权归作者所有:来自51CTO博客作者mb6300b232419d1的原创作品,请联系作者获取转载授权,否则将追究法律责任
我们知道程序无非三种执行方式——顺序、条件、循环。顺序就是一条一条的执行,是一马平川;条件就是个十字路口,根据条件决定自己的走向;循环就是笨驴拉磨,一圈一圈的走,知道达到条件终止。现在集中shell中的循环执行。
存在两个模式:
- while do done、 until do done
- for do done
while do done、 until do done模式
基本语法:
##while do done 不满足条件时会终止循环
while [ 条件表达式 ]
do满足时可执行的命令
done
##until do done 满足条件是会终止循环
until [ 条件表达式 ]
do不满足时可执行的命令
done
例子:求1--100之和
#!bin/bash
sum=0
i=1
while [ "$i" -le "100" ]
do
sum=$(($sum + $i))
i=$(($i+1))
done
echo "sum(1-100):" $sum
#!bin/bash
sum=0
i=1
until [ "$i" == "101" ]
do
sum=$(($sum + $i))
i=$(($i + 1))
done
echo "sum(1-100):" $sum
这里特别强调一下算式最好用这个模式: var=$(($var + 1))
for do done 模式
for((初始值; 条件; 执行步长))
do
程序段
done
例子:还是1--100之和
#!bin/bash
for((i=1; i<=100; i++))
do
sum=$(($sum + $i))
i=$(($i + 1))
done
echo "sum(1--100):" $sum
注意细节:for((初始值; 条件; 执行步长))里面的预压和c语言一样了,但是一点不同双括号。
更高级点的模式:
for var in con1 con2 con3
do
程序段
done
例子:列举出目录下的所有文件名
#!bin/bash
read -p "Please enter the dir name:" dirname
list=`ls $dirname`
for file in $list
do
echo $file
done
注意细节:list=`ls $dirname`,其中的引号不是单引号,是键盘1左边的点号(波浪线下面),它可以使程序执行时优先执行。上面的程序还可以精简为:
#!bin/bash
read -p "Please enter the dir name:" dirname
for file in `ls $dirname`
do
echo $file
done