shell 的条件测试
概述
条件测试是 shell 编程中非常重要的一个概念,它允许我们根据某个条件是否满足,来选择执行相应的任务。
条件测试的语法
shell 中的条件测试语法如下:
[ 条件表达式 ]
如果条件表达式为真,则返回 0,表示测试成功;如果条件表达式为假,则返回非 0 值,表示测试失败。
条件表达式
条件表达式可以是任何可以表示真值或假值的表达式,包括字符串比较、算术比较、文件测试、逻辑运算等。
字符串比较
字符串比较可以使用以下操作符:
操作符 | 含义 |
---|---|
-z str | str 为空时,返回真 |
-n str | str 不为空时,返回真 |
str1 = str2 | str1 等于 str2 时,返回真 |
str1 != str2 | str1 不等于 str2 时,返回真 |
drive_spreadsheet导出到 Google 表格
算术比较
算术比较可以使用以下操作符:
操作符 | 含义 |
---|---|
-eq | 等于 |
-ne | 不等于 |
-gt | 大于 |
-ge | 大于或等于 |
-lt | 小于 |
-le | 小于或等于 |
drive_spreadsheet导出到 Google 表格
文件测试
文件测试可以使用以下操作符:
操作符 | 含义 |
---|---|
-f file | file 存在且是一个普通文件时,返回真 |
-d file | file 存在且是一个目录时,返回真 |
-e file | file 存在时,返回真 |
-s file | file 存在且大小大于 0 时,返回真 |
-r file | file 存在且可读时,返回真 |
-w file | file 存在且可写时,返回真 |
-x file | file 存在且可执行时,返回真 |
drive_spreadsheet导出到 Google 表格
逻辑运算
逻辑运算可以使用以下操作符:
操作符 | 含义 |
---|---|
&& | 逻辑与,都为真时,返回真 |
\ | \ |
! | 逻辑非 |
drive_spreadsheet导出到 Google 表格
扩展知识
- 条件测试的返回值可以被用作变量的值,或者作为判断语句的条件。
- 条件测试可以嵌套使用,以实现更复杂的逻辑判断。
- 条件测试可以与 case 选择语句配合使用,以实现更灵活的条件判断。
实验示例
以下是一些使用条件测试的实验示例:
判断变量是否为空
#!/bin/bashname="Josh"if [ -z "$name" ]; thenecho "变量为空"
elseecho "变量不为空"
fi
运行该脚本,将输出以下结果:
变量不为空
判断文件是否存在
#!/bin/bashfile="/etc/passwd"if [ -e "$file" ]; thenecho "文件存在"
elseecho "文件不存在"
fi
运行该脚本,将输出以下结果:
文件存在
判断字符串是否相等
#!/bin/bashstr1="hello"
str2="world"if [ "$str1" == "$str2" ]; thenecho "字符串相等"
elseecho "字符串不相等"
fi
运行该脚本,将输出以下结果:
字符串不相等
总结
条件测试是 shell 编程中非常重要的一个概念,它可以帮助我们实现复杂的逻辑判断。