条件测试
- 测试表达式是否成立,若成立 $?返回为0,否则返回其他数值
- echo ¥? 0为正确,非0为错误
条件判断的格式
格式1:test 条件表达式
格式2:[ 条件表达式 ] #中括号两边要留有空格
文件测试
test 操作符 文件 或 [ 操作符 文件 ]
常用的操作符
- -e:测试目录或文件是否存在(Exist)
- -d:测试是否为目录(Directory)
- -f:测试是否为文件(File)
- -r:测试当前用户是否有权限读取(Read)
- -w:测试当前用户是否有权限写入(Write)
- -x:测试是否设置有可执行(Excute)权限
- -L:测试是否为符号链接
整数值测试
test 数值1 操作符 数值2 或 [ 数值1 操作符 数值2 ] 或 [[运算表达式 选项 整数]]
常用的操作符
- -eq:等于 ==
- -ne:不等于 !=
- -gt:大于 >
- -lt:小于 <
- -le:小于等于
- -ge:大于等于
字符串测试
test "字符串1" == "字符串2"
[ "字符串1" == "字符串2" ]
[[ "字符串1" == "字符串2" ]] #判断字符串是否相同
test "字符串1" != "字符串2"
[ "字符串1" != "字符串2" ]
[[ "字符串1" != "字符串2" ]] #判断字符串是否不同
[[ "字符串1" =~ "字符串2 ]] #判断字符串1是否包含字符串2
test -z "字符串"
test -z "$变量" [ -z "$变量" ] #判断字符串或变量是否为空
test -n "字符串"
test -n "$变量" [ -n "$变量" ] #判断字符串或变量是否有字符串
逻辑测试
[ 表达式1 ] && [ 表达式2 ]
[ 表达式1 -a 表达式2 ]
[[ 表达式1 && 表达式2 ]] #且,要求前后表达式条件都成立
[ 表达式1 ] || [ 表达式2 ]
[ 表达式1 -o 表达式2 ]
[[ 表达式1 || 表达式2 ]] #或,只需前后表达式条件成立一个即可
[ 表达式1 ] || 命令1
#如果表达式1条件成立不会执行或运算符后面的命令1,如果表达式1条件不成立则会执行或运算符后面的命令1
[ 表达式1 ] && 命令1 || 命令2
#如果表达式1条件成立则执行命令1,如果表达式1条件不成立则命令2
[ ! 表达式1 ] #取反,如果表达式1条件成立则最终结果为条件不成立
if语句
单分支结构
双分支结构
多分支结构
例
case语句
例