当前位置:网站首页>t条件判断语句与if循环
t条件判断语句与if循环
2022-08-03 03:52:00 【不懂计算机的小白】
条件测试
语法格式
格式一:test 条件表达式
格式二:【条件表达式】 中间都要有空格
文件测试指的是根据给定的路径名称,判断对应的是文件还是目录,或者判断文件是否 可读、可写、可执行等。文件测试的常见操作选项如下,使用时将测试对象放在操作选项之后即可。
-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/
$?的作用是输出上一条命令的结果
结果为0表示正确输出
结果为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
边栏推荐
猜你喜欢
随机推荐
第3周 用1层隐藏层的神经网络分类二维数据
第八章 字符输入输出和输入验证
v-on指令:为元素绑定事件
富瑞宣布战略交易,以简化运营,持续专注于打造领先的独立全服务型全球投行公司
【leetcode热题Hot100】——任务调度器
【翻译】开发与生产中的Kubernetes修复成本对比
22 ES6 knowledge points
TCP 和UDP 的详细介绍
中原银行实时风控体系建设实践
Jincang Database Pro*C Migration Guide ( 5. Program Development Example)
Redis-Redisson介绍和用途
正则表达式绕过
How to write test cases in software testing technology (2)
工程制图点的投影练习
【uni-APP搭建项目】
stdio.h(本机代码)
"Obs" start pushing flow failure: the Output. The StartStreamFailed call process
Ask next useful SQL server flink - SQL - connector - essentially a CDC - 2
中非合作论坛非洲产品电商推广季启动 外交部:推动中非合作转型升级
Task Scheduler 计划定时任务,修改时报错: One or more of the specified arguments are not valid