6 Shell脚本的条件测试与比较

已知:$?执行命令后 返回0 表示真 返回1 表示假

6.1.1条件测试 常用的语法

条件表达式语法 说明

1 test <测试表示式> test命令与后面表达式最少一个空格 等同于2

2 [ <测试表示式> ] []边界与内容左右2边最少一个空格 推荐使用

3 [[ <测试表示式> ]] [[]]边界与内容左右2边最少一个空格 扩展的test命令

4 ((<测试表示式>)) (())2端不需要有空格 常用于计算

注意事项

在双中括号[[]]中可以使用通配符 && || > < 不能用于[]中

\]可以使用-a -o -gt -lt 对于整数的关系运算 也可以使用shell的算术运算符(()) 6.1.2 test条件测试的简单语法及示例 语法: test -参数 \<条件表达式\> -f 普通文件 -z 测试字符串为零 表达式成立 非零 不成立 test -f file \&\& echo true \|\| echo false test的-f参数用于测试文件是否为普通文件 test命令若执行成功(假) 则执行\&\&后面的命令 而\|\|后面的命令式test执行失败(假)的后执行的命令 解析:如果test文件存在 则输出true 不存在输出false 也可以只用上面一半逻辑(仅有一个\&\&或\|\|) test -f /tmp/oldboy.txt \&\& echo 1 #若表达式成功 则输出1 test -f /tmp/oldboy.txt \|\| echo o #若表达式不成功 则输出0 补充:\&\&和\|\|的两端可以有空格 也可以没空格 6.1.3 \[\]中括号条件测试语法及示例 语法: \[\<条件表达式\>

示例 [ -f /tmp/old.boy.txt ] && echo 1 || echo 0

-f 前后至少有一个空格 ]前后至少有一个空格 echo 后至少有一个空格

6.1.4[[]]条件测试语法及示例

语法:[[ <条件表达式> ]]

注意:双中括号的两端也要有空格

\[ -f /tmp/old.boy.txt \]\] \&\& echo 1 \|\| echo 0 完整的 \[\] \[\[\]\]的用法可通过 man bash获取 6.2 文件测试表达式 6.2.1 文件测试表达式的用法 常用的文件测试操作符 全拼 说明(真则测试表达式成立) -d 文件 directory 文件存在且为目录则为真 -f 文件 file 文件存在且为普通文件则为真 -e 文件 exist 文件存在则为真 -r文件 read 文件存在且可读则为真 -s文件 size 文件存在且文件大小不为0则为真 -w文件 write 文件存在且可写则为真 -L文件 link 文件存在且为链接文件则为真 -x文件 文件存在且可执行则为真 fl -nt f2 newer than 文件f1比文件f2新则为真 按文件修改时间来计算 f1 -ot f2 older thant 文件f1比文件f2老则为真 按文件修改时间来计算 \[root@localhost /\]# \[ -w oldboy \] \&\& echo 1 \|\| echo 0 1 \[root@localhost /\]# ll \| grep oldboy -rw-r--r-- 1 root root 0 5月 8 01:16 oldboy 提示 测试文件的读写执行等属性 不光是根据文件属性rwx的表示来判断 还有看当前执行的测试用户是否真的可以按照对应的权限操作该文件

相关推荐
深耕AI11 分钟前
【Docker命令】以LocalAI部署为例
运维·docker·容器
JANGHIGH12 分钟前
vmware安装ubuntu虚拟机后与主机win10共享文件夹
linux·运维·ubuntu
GHL28427109012 分钟前
vmware中无法看到共享文件夹
linux·运维·服务器
四谎真好看13 分钟前
MySQL 学习笔记(运维篇1)
运维·数据库·笔记·学习·mysql·学习笔记
我是伪码农28 分钟前
注册表单提交加验证码功能
运维·服务器
范纹杉想快点毕业36 分钟前
嵌入式C语言实战开发详解
linux·运维·算法
天骄t40 分钟前
数据库入门:SQLite实战指南
linux
hanyi_qwe1 小时前
Docker 镜像的创建 【docker (四)】
运维·docker·容器
张某人的胡思乱想1 小时前
周末随笔-整理ubuntu环境
linux·运维·ubuntu
翔云 OCR API1 小时前
智能发票查验接口在财务自动化中的技术实现与应用价值
linux·运维·自动化