shell脚本之条件语句
test命令
格式
测试表达式是否成立,若成立返回0,否则返回其他数值。
格式1: test 条件表达式
格式2: [ 条件表达式 ]
文件测试
格式:
操作符 文件名或者目录名
常用的测试操作符
-d∶ 测试是否为目录(Directory)
-e∶ 测试目录或文件是否存在(Exist)
-f∶ 测试是否为文件(File)
-r∶ 测试当前用户是否有权限读取(Read)
-w∶ 测试当前用户是否有权限写入(Write)
-x∶测试当前用户是否有权限执行(eXcute)
-L∶测试是否为软链接文件
整数值比较
格式
[ 整数1 操作符 整数2 ]
常用的测试操作符
-eq∶ 等于(Equal)
-ne∶ 不等于(Not Equal)
-gt∶ 大于(Greater Than)
-lt∶ 小于(Lesser Than)
-le∶ 小于或等于(Lesser or Equal)
-ge∶ 大于或等于(Greater or Equal)
字符串比较
格式
[ 字符串1 = 字符串2 ] #判断是否相等
[ 字符串1 != 字符串2 ] #判断是否不等
[ -z 字符串 ] #是否空值
[ -n 字符串 ] # 字符集是否存在
常用的测试操作符
=∶ 字符串内容相同
!=∶ 字符串内容不同,!号表示相反的意思
z∶字符串内容为空
逻辑测试
逻辑测试用于连接多个测试条件,并返回整个表达式的值。 逻辑测试主要有"逻辑与","逻辑或","逻辑否"三种
一:[ 表达式1 ] 操作符 [ 表达式2 ]
二:命令1 操作符 命令2
操作符:
-a或&& 逻辑与,而且
-o或|| 逻辑或,或者
[表达式1] && [表达式2] 等同于 [表达式1 -a 表达式2] 等同于 [[表达式1 && 表达式2]]
三元运算符
[ 条件表达式 ] && 值1 || 值2
|| 运算符的前面表达执行成功后将不会再运行后面的表达式
if语句
单分支结构
语法:
if [ 条件测试表达式 ] #如果 [ 为真 ]
then #那么 命令1 #执行该命令
else 否则
命令2 #执行命令2
fi #退出
if [ 条件测试表达式 ] #如果 [ 为真 ]
then #那么
命令1 #执行该命令
elif #又如果
命令2 #执行命令2
elif #又如果
命令3 #执行命令3
fi #退出
case语句结构
case多分支结构
语法:
case 变量引用 in
模式1)
命令分支1
;;
模式2)
命令分支2
;;
... *)
默认命令分支
esac
注意:
case支持glob风格的通配符:
* :任意长度任意字符
? :任意单个字符
[0-9] :指定范围内的任意单个字符
| :“或者”的意思,如: a|b