Linux常用Shell脚本测试命令
Posted 白-胖-子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux常用Shell脚本测试命令相关的知识,希望对你有一定的参考价值。
条件测试
- 判断某需求是否满足,需要由测试机制来实现,专用的测试表达式需要由测试命令辅助完成
- 测试过程,实现评估布尔声明,以便用在条件性环境下进行执行
若真,则状态码变量 $? 返回0
若假,则状态码变量 $? 返回1
条件测试命令
- test EXPRESSION test命令 后边接条件
- [ EXPRESSION ] 中括号和test 等价,建议使用 [ ]
- [[ EXPRESSION ]] 双中括号相关于增强版的 [ ], 支持[ ]的用法,且支持扩展正则表达式和通配符
数值测试
- -eq 等于则为真
- -ne 不等于则为真
- -gt 大于则为真
- -ge 大于等于则为真
- -lt 小于则为真
- -le 小于等于则为真
算术表达式数值字符串测试
- == 等于则为真
- != 不等于则为真
-
大于则为真
-
= 大于等于则为真
- < 小于则为真
- <= 小于等于则为真
字符测试
- = 等于则为真
- != 不相等则为真
- -z 字符串 字符串的长度为零则为真
- -n 字符串 字符串的长度不为零则为真
- == 左侧字符串是否和右侧的PATTERN相同
注意:此表达式用于[[ ]]中,PATTERN为通配符 - =~ 左侧字符串是否能够被右侧的正则表达式的PATTERN所匹配
注意: 此表达式用于[[ ]]中;扩展的正则表达式
文件测试
文件存在性测试
- -a FILE:同 -e
- -e FILE: 文件存在性测试,存在为真,否则为假
- -b FILE:是否存在且为块设备文件
- -c FILE:是否存在且为字符设备文件
- -d FILE:是否存在且为目录文件
- -f FILE:是否存在且为普通文件
- -h FILE 或 -L FILE:存在且为符号链接文件
- -p FILE:是否存在且为命名管道文件
- -S FILE:是否存在且为套接字文件
文件权限测试:
- -r FILE:是否存在且可读
- -w FILE: 是否存在且可写
- -x FILE: 是否存在且可执行
- -u FILE:是否存在且拥有suid权限
- -g FILE:是否存在且拥有sgid权限
- -k FILE:是否存在且拥有sticky权限
文件属性测试
- -s FILE #是否存在且非空
- -t fd #fd 文件描述符是否在某终端已经打开
- -N FILE #文件自从上一次被读取之后是否被修改过
- -O FILE #当前有效用户是否为文件属主
- -G FILE #当前有效用户是否为文件属组
- FILE1 -ef FILE2 #FILE1是否是FILE2的硬链接
- FILE1 -nt FILE2 #FILE1是否新于FILE2(mtime)
- FILE1 -ot FILE2 #FILE1是否旧于FILE2
变量测试
- -v NAME 判断 NAME 变量是否定义
- -R NAME 判断 NAME 变量是否定义并且是名称引用
组合测试条件
表达式组合条件测试
- [ EXPRESSION1 -a EXPRESSION2 ]
并且,EXPRESSION1和EXPRESSION2都是真,结果才为真 - [ EXPRESSION1 -o EXPRESSION2 ]
或者,EXPRESSION1和EXPRESSION2只要有一个真,结果就为
真 - [ ! EXPRESSION ] 取反
说明: -a 和 -o 需要使用测试命令进行,[[ ]] 不支持
命令与或非条件测试
- COMMAND1 && COMMAND2
并且,短路与,代表条件性的AND THEN,如果COMMAND1 成功,将执行COMMAND2,否则,将不执行COMMAND2 - COMMAND1 || COMMAND2
或者,短路或,代表条件性的OR ELSE,如果COMMAND1 成功,将不执行COMMAND2,否则,将执行COMMAND2 - ! COMMAND
非,取反
举例
- 判断输入为yes还是no
read -p "Please input yes or no: " input
[[ $input =~ ^([Yy][Ee][Ss]|[Yy])$ ]] && echo YES
[[ $input =~ ^([Nn][Oo]|[Nn])$ ]] && echo NO
- 创建目录/backup,如果创建成功了则拷贝a.txt到/backup目录中去
mkdir /backup && cp -a a.txt /backup
- 检测/backup目录是否存在,如果不存在则创建
[ -d /backup ] || mkdir /backup
以上是关于Linux常用Shell脚本测试命令的主要内容,如果未能解决你的问题,请参考以下文章