Shell编程之控制结构if

时间:2022-09-08 18:47:41

所有的编程语言中都有控制结构,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

代码中[ $num -lt 10 ] 是test命令的另一种写法,需要注意的是‘[‘’之后和‘]’之前必须有一个空格。

if....then....elif.....是一个多分支结构,如果程序需要的话elif可以无限制的写下去(其中elif代表else if的缩写)。

例子:

#!/bin/sh
#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
代码中判断条件中 -a代表逻辑与,只有当-a前后两个条件同时成立时,整个表达式才为真。

添加可执行权限:

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.