当前位置:网站首页>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
边栏推荐
猜你喜欢
随机推荐
银微转债,洁特转债上市价格预测
Compose the displacement of the view
软件测试个人求职简历该怎么写,模板在这里
AF-DNAT
【STM32】入门(四):外部中断-按键通过中断动作
OneNote 教程,如何在 OneNote 中设置笔记格式?
Auto. Js scripts run time calculated Pro
Guys, I don't understand a bit: why the documentation of oracle-cdc writes that the connector can be done exactly-o
基于flowable的upp(统一流程平台)运行性能优化(3)
Have bosses know date field flinksql is synchronized to the use of the null on how to deal with
Domino服务器SSL证书安装指南
Oracle EMCC可以独立安装吗?还是必须安装到数据库服务器上?
再讲Promise
移植RT-Thread编译报错thumb conditional instruction should be in IT block
conda常用命令合集
ClickHouse卸载、重安装
SM30 表维护视图数据保存前 数据校验事件
Pro * C Jin Cang database migration guide (4) KingbaseES Pro * C migration guide)
数值类型转换02
Shell编程的条件语句