当前位置:网站首页>Shell:条件测试操作
Shell:条件测试操作
2022-08-01 09:19:00 【IT.cat】
一、语法格式:
1.1、文本测试:
格式1 test 条件测试式
test 2 [条件表达式] #注意中括号和表达式中间需要隔一个空格或[[条件表达式]]
文件测试指的是根据给定的路径名称,判断对应的是文件还是目录,或者判断文件是否 可读、可写、可执行等。文件测试的常见操作选项如下,使用时将测试对象放在操作选项之后即可。
-d:测试是否为目录(Directory)。
-e:测试目录或文件是否存在(Exist)。
-f:测试是否为文件(File)。
-r:测试当前用户是否有权限读取(Read)。
-w:测试当前用户是否有权限写入(Write)。
-x:测试是否设置有可执行(Excute)权限。
-b:测试是否为设备文件
-c:测试是否为字符设备文件
-s:测试存在且文件大小为空
-L:测试是否为链接文件
执行条件测试操作以后,通过预定义变量$?可以获得测试命令的返回状态值,从而判断该条件是否成立。例如,执行以下操作可测试目录/media/是否存在,如果返回值$?为 0, 表示存在此目录,否则表示不存在或者虽然存在但不是目录。
1.2、数值值比较
整数值比较指的是根据给定的两个整数值,判断第一个数与第二个数的关系,如是否大于、等于、小于第二个数。整数值比较的常用操作选项如下,使用时将操作选项放在要 比较的两个整数之间。
常用测试操作符
-eq:第一个数等于(Equal)第二个数。
-ne:第一个数不等于(Not Equal)第二个数。
-gt:第一个数大于(Greater Than)第二个数。
-lt:第一个数小于(Lesser Than)第二个数。
-le:第一个数小于或等于(Lesser or Equal)第二个数。
-ge:第一个数大于或等于(Greater or Equal)第二个数。
1.3、字符串比较
字符串比较通常用来检查用户输入、系统环境等是否满足条件,在提供交互式操作的Shell脚本中,也可用来判断用户输入的位置参数是否符合要求。字符串比较的常用操作选项如下。
=:第一个字符串与第二个字符串相同。
!=:第一个字符串与第二个字符串不相同,其中“!”符号表示取反。
-z:检查字符串是否为空(Zero),对于未定义或赋予空值的变量将视为空串。
1.4、逻辑性测试
逻辑测试指的是判断两个或多个条件之间的依赖关系。当系统任务取决于多个不同的条件时,根据这些条件是否同时成立或者只要有其中一个成立等情况,需要有一个测试的过程。
常用的逻辑测试操作如下,使用时放在不同的测试语句或命令之间。
● &&:逻辑与,表示“而且”,只有当前后两个条件都成立时,整个测试命令的返回值 才为 0(结果成立)。使用 test命令测试时,“&&”可改为“-a”。
● ||:逻辑或,表示“或者”,只要前后两个条件中有一个成立,整个测试命令的返回值即为 0(结果成立)。使用 test 命令测试时,“||”可改为“-o”。
● !:逻辑否,表示“不”,只有当指定的条件不成立时,整个测试命令的返回值才为 0(结果成立)。
二、if语句
if 条件测试操作
then
命令序列
fi #注意后面有个结尾,开头结尾要凑成一对否则会报语法错误
#!/bin/bash
read -p "请输入你的分数: " score
if [ $score -eq 100 ];then
echo "秀儿!"
elif [ $score -ge 90 ] && [ $score -lt 100 ]
then
echo "$score 分,抄10遍!"
elif [ $score -ge 70 -a $score -le 89 ]
then
echo "$score 分,抄20遍!"
elif [ $score -ge 60 -a $score -le 69 ]
then echo "$score 分,抄30遍! "
elif [ $score -ge 0 -a $score -lt 60 ]
then echo "$score 分,全抄30遍 !"
else echo "输入有误!"
fi
边栏推荐
- In the background of the GBase 8c database, what command is used to perform the master-slave switchover operation for the gtm and dn nodes
- Redis中间件(从搭建到弃坑)
- pytest interface automation testing framework | single/multiple parameters
- 毕业论文写作技巧
- 静态Pod、Pod创建流程、容器资源限制
- Redis middleware (from building to refuse pit)
- 【数据集】各类绝缘子、鸟巢及防震锤数据集汇总
- Ogg synchronizes oracle to mysql, there may be characters that need to be escaped in the field, how to configure escape?
- 基于MySql,Redis,Mq,ES的高可用方案解析
- sqlserver怎么查询一张表中同人员的交叉日期
猜你喜欢
[Dataset] Dataset summary of various insulators, bird's nests and anti-vibration hammers
net stop/start mysql80 拒绝访问
热修复技术可谓是百花齐放
YOLOv7-Pose尝鲜,基于YOLOv7的关键点模型测评
leetcode-6134: Find the closest node to the given two nodes
杨辉三角(c语言实现)
Data Analysis 6
【应用推荐】常见资源管理器整理,含个人使用体验和产品选型推荐
ACmix 论文精读,并解析其模型结构
获取页面数据的方法
随机推荐
HPC系统简介
Do I need to introduce any dependencies to write data to clickhouse using flinksql?
指针的介绍及应用
量化日常工作指标
三子棋(C语言实现)
巧妙利用unbuffer实时写入
如何保证数据库与缓存数据一致性?
SkiaSharp's WPF self-painted five-ring bouncing ball (case version)
解析MySQL数据库:“SQL优化”与“索引优化”
leetcode-6133: maximum number of groupings
pytest interface automation testing framework | single/multiple parameters
Lsky Pro 企业版手动升级、优化教程
【数据集】各类绝缘子、鸟巢及防震锤数据集汇总
企业数据虚拟化综合指南
sqlserver怎么查询一张表中同人员的交叉日期
[Dataset] Dataset summary of various insulators, bird's nests and anti-vibration hammers
自定义IP在PCIE中使用
【Unity3D】相机
various network protocols
在GBase 8c数据库后台,使用什么样的命令来对gtm、dn节点进行主备切换的操作