Shell编程条件语句
条件测试操作
test命令
- 用来测试表达式是否成立,若成立返回0,否则返回其他数值
- 它只能用来判断是否成立,无法判断是否正确
格式1:test 条件表达式
格式2:[ 条件表达式 ] #中括号和条件表达式两边要有空格,否则会报错
在进行测试表达式的时候,如果我们测试一个没有定义的表达式,那么他返回的就是非0值,代表该表达式不成立,但当我们定义了该值,那么就代表表达式成立,就会返回0.
文件测试
[ 操作符 文件或目录 ] #中括号与内容需要有空格
常见的测试操作符
-d:测试是否为目录(Directory)
-e:测试目录或文件是否存在(Exist)
-f:测试是否为文件(File)
-r:测试当前用户是否有权限读取(Read)
-w:测试当前用户是否有权限写入(Write)
-x:测试当前用户是否有权限执行(eXcute)
整数值比较
[ 整数1 操作符 整数2 ]
常见的测试操作符
* -eq:等于(Equal)
* -ne:不等于(Not Equal)
* -gt:大于(Greater Than)
* -lt:小于(Lesser Than)
* -le:小于或等于(Lesser or Equal)
* -ge:大于或等于(Greater or Equal)
字符串比较
格式1: [ 字符串1 = 字符串2 ] [ 字符串1 != 字符串2]
格式2:[ -z 字符串 ] [ -n 字符串 ]
常用的测试操作符
=:字符串内容相同
!=:字符串内容不同,!号表示取反的意思
-z:字符串内容为空 ,对于未定义或者赋予空值的变量将被视为空串
-n:检查是否有字符串存在
逻辑测试
格式1:[ 表达式1 ] 操作符 [ 表达式2 ] ...
格式2:命令1 操作符 命令2 ...
常用的测试操作符
-a或&&:逻辑与,“而且”的意思,前后条件需都成立。
# &&,||操作符能够正常存在于[[]]条件判断结构中,但如果出现在[]结构中,会报错。
-o或||:逻辑或,“或者”的意思,只需要前后条件中的一个成立
!:逻辑否