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的表示来判断 还有看当前执行的测试用户是否真的可以按照对应的权限操作该文件

相关推荐
王道长服务器 | 亚马逊云14 分钟前
AWS + 苹果CMS:影视站建站的高效组合方案
服务器·数据库·搜索引擎·设计模式·云计算·aws
小武~17 分钟前
嵌入式Linux系统性能优化:深入剖析I/O性能瓶颈
linux·运维·性能优化
dragoooon3420 分钟前
[Linux——Lesson21.进程信号:信号概念 & 信号的产生]
linux·运维·服务器
头发还没掉光光33 分钟前
Linux网络初始及网络通信基本原理
linux·运维·开发语言·网络·c++
顾安r33 分钟前
11.7 脚本网站 中国象棋
python·bash
爱和冰阔落36 分钟前
【Linux工具链】从跨平台适配到一键部署:yum多架构支持+Vim远程编辑+gcc交叉编译,解决多场景开发效率瓶颈
linux·运维·vim
zzzsde1 小时前
【Linux】权限(2):文件权限的深入理解&&粘滞位
linux·运维·服务器
火龙谷1 小时前
dy自动化遇到的滑动问题
运维·自动化
序属秋秋秋1 小时前
《Linux系统编程之开发工具》【实战:倒计时 + 进度条】
linux·运维·服务器·c语言·c++·ubuntu·系统编程
七夜zippoe1 小时前
Ascend C流与任务管理实战:构建高效的异步计算管道
服务器·网络·算法