前言
与其他编程语言一样,shell也有顺序、分支、循环三种控制结构。
一、顺序结构
即程序自入口到出口依次执行,实例如下:
A=10
B=20
echo $[$A+$B]
二、分支结构
分支如同原本笔直的大道突然在前面分成了两条以上的小路,此时,需要根据所给条件的判定结果,决定最终走哪一条路。
2.1 双分支
即 if...else
结构,实例如下:
T=20
if [ $T > 20 ]
then
echo "$T大于20"
else
echo "$T小于20"
fi
2.1 多分支
即case语句
,实例如下:
ACTION=stop
case $ACTION in
stop)
echo "stop xxx service"
;;
start)
echo "start xxx service"
;;
restart)
echo "restart xxx service"
;;
*) #默认匹配
echo "execute other actions"
;;
esac #case的反写
三、循环结构
重复做具有同样流程的事。
3.1 for循环
九九乘法表,实例如下:
for((i=1;i<10;i++))
do
for((j=1;j<=i;j++))
do
echo -ne "$j * $i = $[$i*$j]\t"
done
echo -e "\n"
done
结果:
1 * 1 = 1
1 * 2 = 2 2 * 2 = 4
1 * 3 = 3 2 * 3 = 6 3 * 3 = 9
1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16
1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25
1 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36
1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49
1 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64
1 * 9 = 9 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81
3.2 while循环
求n!,实例如下:
i=1
res=1
while [ $i -le $1 ] # $1为传入脚本的第一个参数
do
res=$[$i*$res]
i=$[$i+1]
done
echo "$1的阶乘为:$res"