shell脚本条件语句
一、Shell脚本条件测试操作
1.test命令
格式1: test 条件表达式
格式2: [条件表达式]
●测试表达式是否成立,若成立返回0,否则返回其他数值。
●在Python中若表达式成立则为true为1,不成立则为false为0正好和shell相反。
2.文件测试
操作格式
[操作符 文件或目录]
●常用的测试操作符
命令符格式 | 作用 |
---|---|
-d | 测试是否为目录(Directory) |
-e | 测试目录或文件是否存在(Exist) |
-f | 测试是否为文件(File) |
-r | 测试当前用户是否有权限读取(Read) |
-w | 测试当前用户是否有权限写入(Write) |
-x | 测试当前用户是否有权限执行(eXcute) |
-L | 测试是否为软连接文件 |
3.整数值比较
格式:
[整数1 操作符 整数2]
●常用的测试操作符
操作符格式 | 说明 |
---|---|
-eq | 等于(Equal) |
-ne | 不等于(Not Equal) |
-gt | 大于(Greater Than) |
-lt | 小于(Lesser Than) |
-le | 小于或等于(Lesser or Equal) |
-ge | 大于或等于(Greater or Equal) |
4.字符串比较
格式1
[字符串1 =字符串2]
[字符串1=字符串2]
格式2
[-Z字符串]
●常用的测试操作符
操作符格式 | 说明 |
---|---|
= | 字符串内容相同 |
!= | 字符串内容不同,!号表示相反的意思 |
-z | 字符串内容为空 |
5.逻辑测试
格式1:[表达式1] 操作符 [表达式2]...
格式2:命令1 操作符 命令2...
●常用的测试操作符
-a或&&:逻辑与,“而且” 的意思
-o或||:逻辑或,“或者” 的意思
!: 逻辑否
二、if语句结构
1.if单分支语句
●语法格式
第一种语法:
if <条件表达式>
then
指令
fi
第二种语法:
if <条件表达式>;then
指令
fi
●if单分支语句说明
当if后面的<条件表达式>成立(真)的时候,就会执行then后面的指令或语句,否则,就会忽略then后面的指令或语句,转而执行fi下面的程序。
2.if双分支语句
●语法格式
语法:
if <条件表达式>
then
指令
else
指令
fi
●if双分支语句说明
判断第一个条件匹配执行命令序列一
条件不匹配执行命令二
3.if多分支语句
●语法格式
if 条件测试操作1
then
命令序列一
elif 条件二
then
命令序列二
else
命令序列三
fi
●if多分支语句说明
第一个条件匹配执行命令序列一
第一个不匹配匹配第二个条件执行命令序列二
一和二条件都不匹配执行默认命令
三、case语句结构
●语法格式
case $变量名 in
模式1)
命令序列1
;;
模式2)
命令序列2
;;
*)
默认执行的命令序列
;;
esac
●case语句说明
Shell case in 语句中的*)用来“托底”,万一 expression 没有匹配到任何一个模式,*)部分可以做一些“善后”工作,或者给用户一些提示。
可以没有*)部分。如果 expression 没有匹配到任何一个模式,那么就不执行任何操作。
除最后一个分支外(这个分支可以是普通分支,也可以是*)分支),其它的每个分支都必须以;;结尾,;;代表一个分支的结束,不写的话会有语法错误。最后一个分支可以写;;,也可以不写,因为无论如何,执行到 esac 都会结束整个 case in 语句。