3. shell语法——判断语句

if…then形式
类似于C/C++中的if-else语句。

单层if
命令格式:

1
2
3
4
5
6
if condition
then
语句1
语句2
...
fi

示例:

1
2
3
4
5
6
7
a=3
b=4

if [ "$a" -lt "$b" ] && [ "$a" -gt 2 ]
then
echo ${a}在范围内
fi

输出结果:

1
3在范围内

单层if-else
命令格式

1
2
3
4
5
6
7
8
9
10
if condition
then
语句1
语句2
...
else
语句1
语句2
...
fi

示例:

1
2
3
4
5
6
7
8
9
10
a=3
b=4

if ! [ "$a" -lt "$b" ]
then
echo ${a}不小于${b}
else
echo ${a}小于${b}
fi

输出结果:

1
3小于4

多层if-elif-elif-else
命令格式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if condition
then
语句1
语句2
...
elif condition
then
语句1
语句2
...
elif condition
then
语句1
语句2
else
语句1
语句2
...
fi

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
a=4

if [ $a -eq 1 ]
then
echo ${a}等于1
elif [ $a -eq 2 ]
then
echo ${a}等于2
elif [ $a -eq 3 ]
then
echo ${a}等于3
else
echo 其他
fi

输出结果:

1
其他

case…esac形式
类似于C/C++中的switch语句。

命令格式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
case $变量名称 in
值1)
语句1
语句2
...
;; # 类似于C/C++中的break
值2)
语句1
语句2
...
;;
*) # 类似于C/C++中的default
语句1
语句2
...
;;
esac

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
a=4

case $a in
1)
echo ${a}等于1
;;
2)
echo ${a}等于2
;;
3)
echo ${a}等于3
;;
*)
echo 其他
;;
esac

输出结果:

1
其他