当前位置:网站首页>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
边栏推荐
猜你喜欢
随机推荐
Get the Token from the revised version of Qubutu Bed
372. 超级次方
MySQL查询进阶——从函数到表连接的使用你还记得吗
华为深度学习课程第六、七章
最新的Cesium和Three的整合方法(附完整代码)
Redis middleware (from building to refuse pit)
Leicester Weekly 304 6135. The longest ring in the picture Inward base ring tree
2022.7.31-----leetcode.1161
常见的API安全缺陷有哪些?
leetcode-6132: Make all elements in array equal to zero
正则表达式符号
Classify GBase 8 s lock
PerViT: 神经网络也能像人类利用外围视觉一样观察图像!
【编程之外】当遮羞布被掀开,当人们开始接受一切
【数据集】各类绝缘子、鸟巢及防震锤数据集汇总
套接字选项
pytest interface automation testing framework | skip test classes
How to ensure the consistency of database and cache data?
HoloView--Customization
pytest interface automation testing framework | parametrize source code analysis









