博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1.3 Shell脚本编程基础之条件测试
阅读量:6593 次
发布时间:2019-06-24

本文共 1272 字,大约阅读时间需要 4 分钟。

判断某需求是否满足,需要由测试机制来实现,专用的测试表达式需要由测试命令辅助完成测试过程

评估布尔声明,以便用在条件性执行中
• 若真,则返回0• 若假,则返回1

测试命令:

• test EXPRESSION• [ EXPRESSION ]• [[ EXPRESSION ]]注意:EXPRESSION前后必须有空白字符

注意: 表达式一般用于[[ ]]中

bash的数值测试

-v VAR

变量VAR是否设置

数值测试:

-gt 是否大于-ge 是否大于等于-eq 是否等于-ne 是否不等于-lt 是否小于-le 是否小于等于

bash的字符串测试

用于字符测试中的操作数应该使用双引号标识

字符串测试:

= 是否等于> ascii码是否大于ascii码< 是否小于!= 是否不等于=~ 左侧字符串是否能够被右侧的PATTERN所匹配

注意: 此表达式一般用于[[ ]]中;扩展的正则表达式

-z "STRING“ 字符串是否为空,空为真,不空为假-n "STRING“ 字符串是否不空,不空为真,空为假

注意:用于字符串比较时的用到的操作数都应该使用引号

文件存在性测试

-e FILE: 文件存在性测试,存在为真,否则为假-b FILE:是否存在且为块设备文件-c FILE:是否存在且为字符设备文件-d FILE:是否存在且为目录文件-f FILE:是否存在且为普通文件-h FILE 或 -L FILE:存在且为符号链接文件-p FILE:是否存在且为命名管道文件-S FILE:是否存在且为套接字文件
[root@CentOS7 ~]# [ -e /etc/passwd ] && echo exist exist

权限测试

-r FILE:是否存在且可读-w FILE: 是否存在且可写-x FILE: 是否存在且可执行-u FILE:是否存在且拥有suid权限-g FILE:是否存在且拥有sgid权限-k FILE:是否存在且拥有sticky权限
[root@CentOS7 ~]# [ -u /bin/passwd ] && echo SUIDSUID

双目标测试

FILE1 -ef FILE2: FILE1是否是FILE2的硬链接FILE1 -nt FILE2: FILE1是否新于FILE2(比较mtime)FILE1 -ot FILE2: FILE1是否旧于FILE2#!/bin/bash#判断参数文件是否是“.sh”后缀的文件,是的话添加执行权限[ -f $1 -a ! -x $1 ] || { echo "$1 not is a file"; exit; } echo "$1" | grep ".*[.]sh$" >> /dev/null[ $? -eq 0 ] \    && { chmod +x $1; echo "Set up!"; } \    || echo "$1 not is a script"

转载于:https://blog.51cto.com/13958408/2310600

你可能感兴趣的文章
spring boot 1.5.4 整合webService(十五)
查看>>
modsecurity(尚不完善)
查看>>
获取.propertys文件获取文件内容
查看>>
Redis3.0.5配置文件详解
查看>>
Know about Oracle RAC Heartbeat
查看>>
JQuery——实现Ajax应用
查看>>
前端05.js入门之BOM对象与DOM对象。
查看>>
oracle kill所有plsql developer进程
查看>>
keepalived双机热备原理及实例部署LVS+keepalived
查看>>
曲线学习PyQt5方案一
查看>>
OpenCV学习】矩阵运算和操作2
查看>>
nginx+ffmpeg搭建rtmp转播rtsp流的flash服务器
查看>>
关于在arm裸板编程时使用printf问题的解决方法
查看>>
开源人工智能技术将改变一切
查看>>
2015 上半年 JavaScript 使用统计数据
查看>>
《Python算法教程》——1.6 如果您感兴趣
查看>>
深度解析Java8 – AbstractQueuedSynchronizer的实现分析(下)
查看>>
SSH原理与运用(一):远程登录
查看>>
Spring Framework 4.2 中的新功能和增强功能
查看>>
动态代理解决网站字符集编码
查看>>