shell脚本工具之控制结构
流程控制结构是程序语言中用于控制一段脚本执行流程的结构,shell提供了对多种流程控制结构的支持,包括条件结构,分支结构和循环结构.
一.if语句
格式1:
if 表达式;then
语句1
else
语句2
fi
格式2:
if 表达式1;then
语句1
else
if 表达式2;then
else
if 表达式3
语句2
else
语句3
fi
语句4
fi
fi
格式3:
if 表达式1
语句1
elif 表达式2
语句2
else
语句3
fi
[root@tong1 ~]# cat 1.sh
#!/bin/bash
echo "---------------------"
read -p ‘请输入两个整数值:‘ a b
if [ $a -gt $b ] ;then
echo "第一个数大于第二个数"
elif [ $a -lt $b ];then
echo "第一个数小于第二个数"
elif [ $a = $b ];then
echo "两个数相等"
else
echo "输入的数有问题"
fi
echo "----------------------"
[root@tong1 ~]# ./1.sh
---------------------
请输入两个整数值:3 5
第一个数小于第二个数
----------------------
[root@tong1 ~]# ./1.sh
---------------------
请输入两个整数值:5 3
第一个数大于第二个数
----------------------
[root@tong1 ~]# ./1.sh
---------------------
请输入两个整数值:3 3
两个数相等
----------------------
[root@tong1 ~]# ./1.sh
---------------------
请输入两个整数值:r 5
./1.sh: line 4: [: r: integer expression expected
./1.sh: line 6: [: r: integer expression expected
输入的数有问题
----------------------
[root@tong1 ~]#
二.case语句
格式1:
case 变量 in
模式1)
语句1
;;
模式2)
语句2
;;
esac
格式2:
case $1 in
值1|值2)
语句1
;;
值3)
case $2 in
值4)
语句2
;;
值5)
语句3
;;
esac
值6)
语句4
;;
esac
[root@tong1 ~]# cat 1.sh
#!/bin/bash
echo "---------------------"
read -p ‘请输入两个整数值:‘ a b
abc=`expr $a / 10`
case $abc in
9)
echo "成绩优秀"
;;
8)
echo "表现良好"
;;
7)
case $2 in
‘男‘)
echo "男生成绩不好"
;;
‘女‘)
echo "成绩良好"
;;
esac
;;
*)
echo "成绩不及格"
;;
esac
echo "----------------------"
[root@tong1 ~]#
三.while循环
格式1:
while 表达式
do
语句
done
格式2:
while 表达式1
do
while 表达式2
do
语句1
done
done
[root@tong1 ~]# cat 1.sh
#!/bin/bash
echo "---------------------"
read -p ‘请输入一个整数值:‘ a
i=1
while [ $a -ge $i ]
do
echo "$a的平方值:`expr $a \* $a`"
a=$(($a - 1))
done
echo "----------------------"
[root@tong1 ~]# ./1.sh
---------------------
请输入一个整数值:5
5的平方值:25
4的平方值:16
3的平方值:9
2的平方值:4
1的平方值:1
----------------------
[root@tong1 ~]#
四.for循环
格式:
for 变量 [ in 列表]
do
语句
done
[root@tong1 ~]# cat 1.sh
#!/bin/bash
echo "---------------------"
for b in 1 2 3 4 5
do
echo "$b-------------`expr $b \* $b`"
done
echo "----------------------"
[root@tong1 ~]# ./1.sh
---------------------
1-------------1
2-------------4
3-------------9
4-------------16
5-------------25
----------------------
[root@tong1 ~]#
五.until循环
格式:
until [ 表达式 ] --满足条件就循环
do
语句1
done
[root@tong1 ~]# ./1.sh
---------------------
请输入一个数:6
------------*
1------------1
2------------4
3------------9
4------------16
5------------25
6------------36
----------------------
[root@tong1 ~]# cat 1.sh
#!/bin/bash
echo "---------------------"
read -p "请输入一个数:" abc
until [ $i -gt $abc ]
do
a=`expr $i \* $i`
echo "$i------------$a"
i=$(($i+1))
done
echo "----------------------"
[root@tong1 ~]#
六.select结构
格式:
select 变量 in 列表
do
语句1
done
[root@tong1 ~]# cat 1.sh
#!/bin/bash
echo "---------------------"
select a in 1 2 3 4 5
do
case $a in
1)
echo "这是1"
;;
2)
echo "这是2"
;;
3)
echo "这是3"
;;
4)
echo "这是4"
;;
*)
echo "退出"
break
;;
esac
done
echo "----------------------"
[root@tong1 ~]# ./1.sh
---------------------
1) 1
2) 2
3) 3
4) 4
5) 5
#? 1
这是1
#? 2
这是2
#? 3
这是3
#? 4
这是4
#? 5
退出
----------------------
[root@tong1 ~]#
七.break和continue
break:跳出循环体,break 2跳出外循环体
continue:退出本次循环,continue 2跳出外循环体
本文出自 “一起走过的日子” 博客,请务必保留此出处http://tongcheng.blog.51cto.com/6214144/1624202
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。