Shell编程之条件语句
目录
一、条件测试操作
1.1 文件测试
1.2 整数值比较
1.3 字符串比较
1.4 逻辑测试
二、 if 语句的结构
2.1 单分支 if 语句
2.2 双分支 if 语句
2.3 多分支 if 语句
2.4 嵌套 if 语句
编辑
三、case语句
一、条件测试操作
1.1 文件测试
Shell 环境根据命令执行后的返回状态值($?)来判断是否执行成功,当返回值为 0 时表示成功,否则(非 0 值)表示失败或异常。使用专门的测试工具——test 命令,可以对特 定条件进行测试,并根据返回值来判断条件是否成立(返回值为 0 表示条件成立)。
test 语法格式
格式1: test 条件表达式
格式2: [ 条件表达式 ] 或者 [[ 条件表达式 ]]
#注意中括号和表达式中间需要隔一个空格,负责会报错
文件测试指的是根据给定的路径名称,判断对应的是文件还是目录,或者判断文件是否可读、可写、可执行等;执行条件测试操作以后,通过预定义变量 $? 可以获得测试命令的返回状态值,从而判断该条件是否成立。
格式:[ 操作符 文件或目录 ]
文件测试常见操作
| -d | 测试是否为目录(Directory) |
| -e | 测试目录或文件是否存在(Exist) |
| -f | 测试是否为文件(File) |
| -r | 测试当前用户是否有权限读取(Read) |
| -w | 测试当前用户是否有权限写入(Write) |
| -x | 测试是否设置有可执行(Excute)权限 |
| -b | 测试是否为设备文件 |
| -c | 测试是否为字符设备文件 |
| -s | 测试存在且文件大小为空 |
| -L | 测试是否为链接文件 |
案例:test 条件表达式 / [ 操作符 文件或目录 ]

取反案例:

1.2 整数值比较
整数值比较指的是根据给定的两个整数值,判断第一个数与第二个数的关系,如是否大于、等于、小于第二个数。
格式:[ 整数1 操作符 整数2 ]
整数值比较的常用操作选项如下
| -eq | 第一个数等于(Equal)第二个数 |
| -ne | 第一个数不等于(Not Equal)第二个数 |
| -gt | 第一个数大于(Greater Than)第二个数 |
| -lt | 第一个数小于(Lesser Than)第二个数 |
| -le | 第一个数小于或等于(Lesser or Equal)第二个数 |
| -ge | 第一个数大于或等于(Greater or Equal)第二个数 |
案例:



1.3 字符串比较
字符串比较通常用来检查用户输入、系统环境等是否满足条件,在提供交互式操作的Shell脚本中,也可用来判断用户输入的位置参数是否符合要求。
格式1:
- [ 字符串1 = 字符串2 ]
- [ 字符串1 != 字符串2 ]
格式2
- [ -z 字符串 ]
字符串比较的常用操作选项如下
| = | 字符串内容相同 |
| != | 字符串不相同,其中 “ |
