Shell编程之条件语句:if、case语句    

              一、条件测试

               1)test命令测试

               2)整数值比较

               3)文件测试

               4)字符串比较

               5)逻辑测试

              二、if语句

               1)单分支结构

               2)双分支结构

               3)多分支语句

              三、case语句

 

 

 

 

一、条件测试

Shell环境根据命令执行后的返回状态值($?) 来判断是否执行成功。

当返回值为0(真true)时表示成功,返回值为非0值(假false) 时表示失败或异常。

test命令,可以对特定条件进行测试,并根据返回值来判断条件是否成立($?返回值为0表示条件成立)。

1)test命令测试

测试表达式是否成立,若成立返回值为0,非0值表示条件不成立。

格式1:test 条件表达式

格式2:【 条件表达式 】   #方括号【“或”】与条件表达式之间需要至少一个空格进行分割

例:

Shell编程之条件语句:if、case语句_当前用户

2)整数值比较

【 整数1 操作符 整数2 】

常用的测试操作符

-eq 等于(Equal)
-ne 不等于(Not Equal)
-gt 大于(Greater Than)
-lt 小于(Lesser Than)
-le 小于或等于(Lesser or Equal)
-ge 大于或等于(Greater or Equal)

例:

Shell编程之条件语句:if、case语句_字符串_02

3)文件测试

【 操作符 文件或目录 】

常用的测试操作符

-d 测试是否为目录(Directory)
-e 测试目录或文件是否存在(Exist)
-f 测试是否为文件(File)
-r 测试当前用户是否有权限读取(Read)
-W 测试当前用户是否有权限写入(Write)
-X 测试当前用户是否有权限执行(eXcute)
-L 测试是否为符号链接

例:

-f

Shell编程之条件语句:if、case语句_分支结构_03

-d

Shell编程之条件语句:if、case语句_当前用户_04

-e

Shell编程之条件语句:if、case语句_操作符_05

-x

Shell编程之条件语句:if、case语句_当前用户_06

4)字符串比较

格式1
【 字符串1 = 字符串2 】
【 字符串1!= 字符串2 】
格式2
【 -z 字符串 】是否空值
【 -n 字符串 】#检查是否有字符串存在

常用的测试操作符

= 字符串内容相同
字符串内容不同,!号表示相反的意思
-z 字符串内容为空
-n 字符串是否存在

例:

Shell编程之条件语句:if、case语句_字符串比较_07

5)逻辑测试

格式1
【 表达式1 】 操作符 【 表达式2 】
格式2
命令1 操作符 命令2

常用的测试操作符

-a或&& 逻辑与,"而且"的意思,前后条件需都成立
-o或|| 逻辑或,"或者"的意思,只需前后条件中一个成立
逻辑否

&&、||操作符能够正常存在于【【】】条件判断结构中,但是如果出现在【】结构中的话,会报错。

例:

Shell编程之条件语句:if、case语句_当前用户_08

||

Shell编程之条件语句:if、case语句_字符串比较_09

二、if语句

1)单分支结构

if 条件测试操作

  then 命令序列

fi

例:

Shell编程之条件语句:if、case语句_字符串_10

验证

Shell编程之条件语句:if、case语句_字符串比较_11

2)双分支结构

if 条件测试操作

   then 命令序列1
   else  命令序列2

fi

例:

Shell编程之条件语句:if、case语句_当前用户_12

验证

Shell编程之条件语句:if、case语句_分支结构_13

3)多分支语句

if 条件测试操作1

   then 命令序列1

elif 条件测试操作2

   then 命令序列2

else

   命令序列3

fi

例:

Shell编程之条件语句:if、case语句_字符串_14

验证

Shell编程之条件语句:if、case语句_操作符_15

三、case语句

语法结构

case 变量值 in

模式1)
     命令序列1
     ;;
模式2)
     命令序列2
     ;;
*)
     默认命令序列
esac

例:

Shell编程之条件语句:if、case语句_字符串比较_16

验证

Shell编程之条件语句:if、case语句_操作符_17