一、条件测试操作
1.1、文件测试
文件测试指的是根据给定的路径名称,判断对应的是文件还是目录,或者判断文件是否 可读、可写、可执行等。文件测试的常见操作选项如下,使用时将测试对象放在操作选项之后即可。
格式1 test 条件表达式
格式2 [ 条件表达式 ] #注意中括号和表达式中间需要隔一个空格-d:测试是否为目录(Directory)。
-e:测试目录或文件是否存在(Exist)。
-f:测试是否为文件(File)。
-r:测试当前用户是否有权限读取(Read)。
-w:测试当前用户是否有权限写入(Write)。
-x:测试是否设置有可执行(Excute)权限。
-b:测试是否为设备文件
-c:测试是否为字符设备文件
-s:测试存在且文件大小为空
-L:测试是否为链接文件执行条件测试操作以后,通过预定义变量$?可以获得测试命令的返回状态值,从而判断该条件是否成立。(0为真;1为假)
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语句的结构
2.1、双中括号
单个括号([ ]):必须要有空格 两个字符或数字之间的比较左右必须有空格
条件判断:test一种形式,[ ]中间只能使用 = 和 != 比较字符串 ,如果使用 < 、>需要进行转义\.
然后中间如果比较数字要用 -lt 等符号, 不能使用\<比较数字,他会当成字符串处理
两个括号([ [ ] ]):可用于处理逻辑命令,也可以处理字符串是否相等,且使用 < 、>不用转义符。
2.2、单分支 if 语句
单分支 if 语句:对于单分支的选择结构,只有在“条件成立”时才会执行相应的代码,否则不执行任何操作。
if 条件测试操作
then
命令序列
fi #注意后面有个结尾,开头结尾要凑成一对否则会报语法错误或者
if 条件测试操作;then
命令序列
fi
2.3、双分支 if 语句
双分支 if 语句只是在单分支的基础上针对“条件不成立”的情况执行另一种操作,而不是 “坐视不管”地不执行任何操作。
if 判断条件
then
执行命令1
else
执行命令2
fi
2.4、多分支if语句
与单分支、双分支 if 语句相比,多分支 if 语句的结构能够根据多个互斥的条件分别执行不同的操作
if 判断条件
then
执行命令1
elif 判断条件
执行命令2
elif 判断条件
执行命令3
else
执行命令 n
fi
2.5、嵌套if语句
if 判断是否启动
if 如果启动------输出已启动
如果没启动----判断是否安装---如果安装---启动
如果没安装----安装---如果安装成功---启动
如果安装不成功-----报错
三、case语句
case 语句可以使脚本程序的结构更加清晰、层次分明,常用于服务的启动、重启、停止的脚本,有的服务不提供这种控制脚本,需要用case语句编写。
case 语句主要适用于以下情况:某个变量存在多种取值,需要对其中的每一种取值分别执行不同的命令序列。这种情况与多分支的 if 语句非常相似,只不过 if 语句需要判断多个 不同的条件,而 case 语句只是判断一个变量的不同取值。
标签:语句,case,Shell,是否,判断,测试,条件 From: https://blog.csdn.net/pangdongqiqi/article/details/140495369case 变量值 in
模式 1)
命令序列 1
;;
模式 2)
命令序列 1
;;
* )
默认命令序列
esaccase 行尾必须为单词“in”,每一模式必须以右括号“)”结束。双分号“;;”表示命令序列的结束。