所有的编程语言中都有控制结构,Shell编程也不例外。其中if结构是最常用的分支控制结构。
Linux shell编程中常用的if语句有:if.....then...fi,if....then....else....fi,if....then...elif......
if....then.....else...语句非常简单,语法如下:
if 表达式
then 命令表
[else 命令表]
fi
其中表达式是判断条件,命令表是条件成立时执行的shell命令,fi代表整个if语句的结束,必须得有。
下面看一个例子:
#!/bin/bash
#filename:if.sh
#author:gyb
read num
if [ $num -lt 10 ];then
echo "$num<10"
else
echo "$num>10"
fi
增加可执行权限
root@ubuntu:~# chmod +x if.sh
执行
root@ubuntu:~# ./if.sh
2
2<10
root@ubuntu:~# ./if.sh
24
24>10
if....then....elif.....是一个多分支结构,如果程序需要的话elif可以无限制的写下去(其中elif代表else if的缩写)。
例子:
#!/bin/sh代码中判断条件中 -a代表逻辑与,只有当-a前后两个条件同时成立时,整个表达式才为真。
#filename:elif.sh
#author:gyb
echo "input score:"
read score
if [ $score -ge 0 -a $score -lt 60 ];then
echo "E"
elif [ $score -ge 60 -a $score -lt 70 ];then
echo "D"
elif [ $score -ge 70 -a $score -lt 80 ];then
echo "C"
elif [ $score -ge 80 -a $score -lt 90 ];then
echo "B"
elif [ $score -ge 90 -a $score -le 100 ];then
echo "A"
else
echo "input error"
fi
添加可执行权限:
root@ubuntu:~# chmod +x elif.sh
执行
root@ubuntu:~# ./elif.sh
input score:
34
E
root@ubuntu:~# ./elif.sh
input score:
67
D
root@ubuntu:~# ./elif.sh
input score:
78
C
root@ubuntu:~# ./elif.sh
input score:
89
B
root@ubuntu:~# ./elif.sh
input score:
99
A
if语句是可以嵌套的,并且可以多重嵌套
例子:
#!/bin/bash
#filename:ifnest.sh
#author:gyb
read num
if [ $num -lt 100 ];then
echo "$num<100"
if [ $num -lt 50 ];then
echo "$num<50"
if [ $num -lt 30 ];then
echo "$num<30"
fi
fi
fi
添加可执行权限
root@ubuntu:~# chmod +x ifnest.sh
执行
root@ubuntu:~# ./ifnest.sh
23
23<100
23<50
23<30
root@ubuntu:~# ./ifnest.sh
45
45<100
45<50
End.