当前位置: 首页 > news >正文

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函数参数
  • Linux脚本shell编程通过数组实现石头剪刀布小游戏
  • CentOS8快速安装Docker
  • CentOS8快速部署轻量级自动化运维平台Spug
  • DveOps常见项目代码部署发布方式
  • 云原生时代一站式DevOps平台--阿里云效
  • IBM WAS 简介
  • 实现判断CentOS的主版本号
  • Linux校验比对文件一致性的shell脚本
  • Linux防火墙之通俗易懂的iptables五表五链解释
  • nmap部分实例应用
  • VSFTP服务器配置具有不同访问权限的虚拟用户
  • linux配置应用服务器通过证书免密码登录SFTP测试站点
  • Linux下非逻辑卷扩容之创建逻辑卷pvcreate是否会损坏原数据测试
  • Linux下非逻辑卷扩容之新增盘扩容
  • eclipse的离线汉化
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • Objective-C 中关联引用的概念
  • V4L2视频输入框架概述
  • 创建一种深思熟虑的文化
  • 从重复到重用
  • 将 Measurements 和 Units 应用到物理学
  • 聊聊sentinel的DegradeSlot
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 通过git安装npm私有模块
  • 因为阿里,他们成了“杭漂”
  • 应用生命周期终极 DevOps 工具包
  • gunicorn工作原理
  • MyCAT水平分库
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • ​secrets --- 生成管理密码的安全随机数​
  • ​比特币大跌的 2 个原因
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • #《AI中文版》V3 第 1 章 概述
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (三)模仿学习-Action数据的模仿
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (转)socket Aio demo
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .net 微服务 服务保护 自动重试 Polly
  • .NET 中的轻量级线程安全
  • .Net程序帮助文档制作
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)
  • .NET运行机制
  • /deep/和 >>>以及 ::v-deep 三者的区别
  • [ Algorithm ] N次方算法 N Square 动态规划解决
  • [ vulhub漏洞复现篇 ] ThinkPHP 5.0.23-Rce
  • [20170705]lsnrctl status LISTENER_SCAN1
  • [AIGC] 如何建立和优化你的工作流?
  • [BUUCTF NewStarCTF 2023 公开赛道] week3 crypto/pwn