条件测试test
- test 命令
测试表达式是否成立,若成立返回0,否则返回其他数值
格式1:test 条件表达式
格式2:[ 条件表达式 ]
文件测试
- 文件测试格式
[ 操作符 文件或目录 ] - 常用的测试操作符
- -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 Equal)
- -ge:大于或等于(Greater Equal)
字符串测试
- 字符串比较
- 格式1:[ 字符串1 = 字符串2]
- 格式2:[ -z 字符串 ]
- 常用的测试操作符
- =:字符串内容相同
- !=:字符串内容不同,!表示相反的意思
- -z:字符串内容为空
- -n :检查是否有字符串存在
逻辑测试
- 逻辑测试
- 格式1:[ 表达式1 ] 操作符 [ 表达式2 ] …
- 格式2:命令1 操作符 命令2 …
- 常用的测试操作符
-a
或&&
:逻辑与,“而且”的意思。前面执行成功继续执行后面的没成功就不执行了-o
或||
:逻辑或,“或者”的意思。或前面执行成功就不会执行后面的,前面的执行失败就会执行后面的!
:逻辑否
a=5
[ $a -ne 1 ] && [ $a !=2 ]
等同于[ $a -ne 1 -a $a !=2 ]
&&
和||
操作符能够正常存在于[[ ]]
条件判断结构中,但是如果出现在[ ]
结构中会报错
if语句
if单分支语句
- 单分支结构
- 举例
if双分支语句
- 双分支结构
- 举例
if多分支语句
- 多分支结构
- 举例
case分支语句
- case 多分支结构
- 注意事项
- case行首必须以单词“in”,每一模式必须以单个右括号")"结束
- 双分号";;"表示命令序列的结束
- 模式字符串中,可以用方括号表示一个连续的范围,如"[0-9]";还可以使用竖杠|表示或,比如a|b
最后的*)表示默认模式,其中的*相当于通配符
- 举例:
- 第二种方式
- 例子2