当前位置:网站首页>t conditional judgment statement and if loop
t conditional judgment statement and if loop
2022-08-03 04:03:00 【computer idiot】
条件测试
语法格式
格式一:test 条件表达式
格式二:【条件表达式】 In the middle should have space
文件测试指的是根据给定的路径名称,判断对应的是文件还是目录,或者判断文件是否 可读、可写、可执行等.文件测试的常见操作选项如下,使用时将测试对象放在操作选项之后即可.
-d:测试是否为目录(Directory).
-e:测试目录或文件是否存在(Exist).
-f:测试是否为文件(File).
-r:测试当前用户是否有权限读取(Read).
-w:测试当前用户是否有权限写入(Write).
-x:测试是否设置有可执行(Excute)权限.
-b:测试是否为设备文件
-c:测试是否为字符设备文件
-s:测试存在且文件大小为空
-L:测试是否为链接文件
执行条件测试操作以后,通过预定义变量$?可以获得测试命令的返回状态值,从而判断该条件是否成立.例如,执行以下操作可测试目录/media/是否存在,如果返回值$?为 0, 表示存在此目录,否则表示不存在或者虽然存在但不是目录
例如:
test -d /etc/sysconfig/
test -f /etc/sysconfig/
test -e /etc/sysconfig/

$?The role of is the result of a command on the output
结果为0Said the correct output
结果为1表示错误输出
[ -f /home/lnj / ]
[ -d /home/lnj/ ] && echo "YES"
[ ! -e /opt/ky21 ] && mkdir /opt/ky21

逻辑与逻辑非
逻辑测试指的是判断两个或多个条件之间的依赖关系.当系统任务取决于多个不同的条件时,根据这些条件是否同时成立或者只要有其中一个成立等情况,需要有一个测试的过程.
常用的逻辑测试操作如下,使用时放在不同的测试语句或命令之间.
&&:逻辑与,表示“而且”,只有当前后两个条件都成立时,整个测试命令的返回值 才为 0(结果成立).使用 test命令测试时,“&&”可改为“-a”.
||:逻辑或,表示“或者”,只要前后两个条件中有一个成立,整个测试命令的返回值即为 0(结果成立).使用 test 命令测试时,“||”可改为“-o”.
!:逻辑否,表示“不”,只有当指定的条件不成立时,整个测试命令的返回值才为 0(结果成立).
整数值比较
整数值比较指的是根据给定的两个整数值,判断第一个数与第二个数的关系,如是否大于、等于、小于第二个数.整数值比较的常用操作选项如下,使用时将操作选项放在要 比较的两个整数之间.
常用测试操作符
-eq:第一个数等于(Equal)第二个数.
-ne:第一个数不等于(Not Equal)第二个数.
-gt:第一个数大于(Greater Than)第二个数.
-lt:第一个数小于(Lesser Than)第二个数.
-le:第一个数小于或等于(Lesser or Equal)第二个数.
-ge:第一个数大于或等于(Greater or Equal)第二个数
例如:who | wc -l
[ $(who|wc -l) -le 5 ]&& echo "用户太少"

[ $(who | wc -l) -ge 10 ] && echo "> = 10."

字符串比较
字符串比较通常用来检查用户输入、系统环境等是否满足条件,在提供交互式操作的Shell脚本中,也可用来判断用户输入的位置参数是否符合要求.字符串比较的常用操作选项如下.
=:第一个字符串与第二个字符串相同.
!=:第一个字符串与第二个字符串不相同,其中“!”符号表示取反.
-z:检查字符串是否为空(Zero),对于未定义或赋予空值的变量将视为空串.
例如:
echo $LANG
zh_CN.UTF-8
[ $LANG != "en.US" ] && echo "Not en.US"

Read -p “是否覆盖现有文件(yes/no)?” ack
[ $ACK = "yes" ] && echo "覆盖"

If语句结构
单分支if语句
实际上使用“&&”和“||”逻辑测试已经可以完成简单的判断并执行相应的操作,但是当需要选择执行的命令语句较多时,这种方式将使执行代码显得很复杂,不好理解.而使用专用的 if 条件语句,可以更好地整理脚本结构,使得层次分明, 清晰易懂
单分支 if 语句:对于单分支的选择结构,只有在“条件成立”时才会执行相应的代码,否则不执行任何操作.
语法格式:
1)
if 条件测试操作
then
命令序列
fi #注意后面有个结尾,开头结尾要凑成一对否则会报语法错误
2)
if 条件测试操作;then
命令序列
fi
if[3 -gt 2];then
echo "ok"
fi
[3-gt2]&&echo"ok"
例如:
#!/bin/bash
if ls /mnt
then
echo "it's ok"
fi


双分支if语句
双分支 if 语句只是在单分支的基础上针对“条件不成立”的情况执行另一种操作,而不是 “坐视不管”地不执行任何操作
例1 判断目标主机是否存活,存活就打印is up,如果不存活就打印is down
-c ping的次数
-i 每次多久ping一次,单位是秒
-W 反馈结果的时间,如果不通时可加快反馈时间,单位是秒


多分支if语句
与单分支、双分支 if 语句相比,多分支 if 语句的结构能够根据多个互斥的条件分别执行不同的操作
#!/bin/bash
name=/etc/
if [ -d $name ];then
echo "这是一个目录"
elif [ -f $name ];then
echo "这是一个文件"
elif [ -b $name ];then
echo "这是一个设备文件"
else
echo "无法判断文件类别"
fi

边栏推荐
- 道通转债,微芯转债,博22转债上市价格预测
- DC-3靶场搭建及渗透实战详细过程(DC靶场系列)
- AF-DNAT
- ClickHouse—高级
- 金仓数据库 MySQL 至 KingbaseES 迁移最佳实践(3. MySQL 数据库移植实战)
- 软件测试个人求职简历该怎么写,模板在这里
- Jincang Database OCCI Migration Guide (5. Program Development Example)
- 金仓数据库 Pro*C 迁移指南( 4. KingbaseES 的 Pro*C 迁移指南)
- Task Scheduler 计划定时任务,修改时报错: One or more of the specified arguments are not valid
- 肖sir_测试点
猜你喜欢
随机推荐
voliate关键字
EssilorLuxottica借助Boomi的智能集成平台实现订单处理的现代化
SeleniumWebDriver扩展插件开发
(2022杭电多校五)1010-Bragging Dice (思维)
2022河南萌新联赛第(四)场:郑州轻工业大学 G - 迷宫
DC-6靶场下载及渗透实战详细过程(DC靶场系列)
自考六级雅思托福备战之路
(2022牛客多校五)G-KFC Crazy Thursday(二分+哈希)
基于flowable的upp(统一流程平台)运行性能优化(3)
中非合作论坛非洲产品电商推广季启动 外交部:推动中非合作转型升级
DC-3靶场搭建及渗透实战详细过程(DC靶场系列)
How to write test cases in software testing technology (2)
ClickHouse卸载、重安装
【leetcode热题Hot100】——任务调度器
【剑指offer】——股票的最大利润
关于#sql#的问题,如何解决?
【STM32】入门(三):按键使用-GPIO端口输出控制
js的组成及js样式
OneNote 教程,如何在 OneNote 中设置笔记格式?
22 ES6 knowledge points









