在具体说明条件语句之前,先引入一下测试语句。顾名思义,测试语句就相当于布尔类型,可以用来条件语句的判断。
1.测试语句有两种,第一种是test express 的测试语句,另一种是[ express ] 的测试语句,这两种语句都是返回的一个布尔类型的值。下面说明这两个语句的具体用法:
数值比较:
num1 -eq num2 : #num1=num2
num1 -gt num2 : #num1>num2
num1 -ge num2 : #num1>=num2
num1 -lt num2 : #num1<num2
num1 -le num2 : #num1<=num2
文件:
-e : #存在为真
-f : #是否是文件
-d: #是否是文件夹
当然,文件的可选参数并非只有这些,有兴趣的可以自己去查阅资料
字符串:
= :#判断相等
!= : #不等
-z : #是否为空,相当于empty方法
-n : #是否不为空
2.if选择语句
语法结构
if [ express1 ]
then
command
elif [ express2 ]
then
command
else
command
fi
上面的即bash中的if语句,当然elif 和 else可以没有,程序将会从上向下进行判断,当进入一个判断之后,后面的就不会在判断了
程序1:
#!/bin/bash
#if语句用法
var1=12
var2=10
if [ $var1 -lt $var2 ]
then
echo $var1 \< $var2
elif [ $var1 -eq $var2 ]
then
echo $var1 = $var2
else
echo $var1 \> $var2
fi
运行结果
程序说明:
由于bash里面< , > 有着特殊的含义,因此用\进行转义
3.case选择语句
语法结构
case express in
value1)command1;;
value2)command2;;
*)commandn;;
esac
最后的 *) 是一个默认的选择结构,全部匹配
程序2:
#!/bin/bash
#case语句用法
case $LOGNAME in
"root")echo 用户为超级用户;;
"curve")echo 用户为管理员;;
*)echo 未知用户;;
esac
echo $LOGNAME
运行结果:
case的作用相当于c语言中的switch。只不过风格不一样 ;; 用来作为一个语句的退出,另外结尾有一个esac (case的反写)作为判断case的结尾
4.select条件语句
select语句和case一样是一个多条件选择语句,不过,select会在in后面添加一些可选项,这些可选项会在终端显现出来,选择其中一个(填数字),如下:
程序3:
#!/bin/bash
#select语句用法
select m in 鸡 鸭 鱼
do
break
done
echo 你喜欢的是$m
运行结果:
5.逻辑组合
当需要一些逻辑表达是组合的时候可以和高级语法的逻辑组和符运用
高级语法一样用 && || !
当然,bash也有着自己风格的组合表达方式如下
-a 相当与&&
-o 相当与||
小结:bash的选择结构和其他语法的类似,之后过有着自己的风格,并且每个语句最后都要这个语句反写作为结束。bash的逻辑判断除了能用高级语法中的方法外,还有这自己风格的方法。