8.shell脚本基础笔记-shell控制结构相关的比较操作
hi,我是温新,一名PHPer
做一个富含正能量的人,负能量让人讨厌
bash支持条判断和循环处理等控制结构,本篇文章是控制结构的前导记录文章。
test命令
用法:test expression
test命令用于检查某个条件是否成立,可以对 数值、字符、文件三个方面进行测试。
当 test 判断 expression 成立时,退出状态为0,失败为非0值。
test -e test.sh
echo $?
&& 和 ||
&&的语法:命令1&&命令2
||的命令:命令1||命令2
&&表示先执行命令1,然后在命令1的退出状态码为0时才执行命令2。也就是 命令1 成功时,才执行 命令2。
|| 先执行 命令1,若命令1的状态码为0以外的值,才执行 命令2。也就是 命令1 执行失败时才执行 命令2。
[[]]
[[]] 用于条件判断。 [[]]用于替代[]。
字符串比较运算
| 运算符 | 含义 |
|---|---|
| str1 = str2 | str1等于str2 |
| str1 == str2 | str1等于str2 |
| str1 != str2 | str1不等于str2 |
| -n str1 | str1为非空字符串 |
| -z str1 | str1为字符串 |
| str1 < str2 | str1比str2在字典顺序上靠前 |
| str1 > str2 | str1比str2在字典顺序上靠后 |
整数比较
| 运算符 | 含义 |
|---|---|
| int1 -eq int2 | int1等于int2 |
| int1 -ne int2 | int1不等于int2 |
| int1 -lt int2 | int1小于int2 |
| int1 -le int2 | int1小于等于int2 |
| int1 -gt int2 | int1大于int2 |
| int1 -ge int2 | int1大于等于int2 |
文件属性判断
| 运算符 | 含义 |
|---|---|
| -a file | file存在(等同-e) |
| -b file | file存在且为块设备 |
| -c file | file存在且为字符设备文件 |
| -d file | file存在且类型为目录 |
| -e file | file存在 |
| -f file | file存在且类型为普通文件 |
| -g file | file存在且已设置set-group-id标志 |
| -h file | file存在且类型为符号链接 |
| -k file | file存在且设置了粘滞位 |
| -p file | file存在且类型为命名管道 |
| -r file | file存在且具有可读权限 |
| -s file | file存在且文件大小大于0 |
| -u file | file存在且设置set-user-id标志 |
| -w file | file存在且具有可写权限 |
| -x file | file存在且具有可执行权限 |
| -S file | file存在且为socket |
组合运算符
| 运算符 | 含义 |
|---|---|
| 条件1 -a 条件2 | 当条件1和条件2同时为真时,返回真(AND) |
| 条件1 -o 条件2 | 当条件1和条件2其中之一为真时,返回真(OR) |
| !条件 | 取与条件相反的值(NOT) |
| () | 对条件进行分组 |
请登录后再评论