Shell编程之条件语句

Posted Richard_Chiang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell编程之条件语句相关的知识,希望对你有一定的参考价值。

Shell编程之条件语句

壹、条件测试操作

  • 文件测试与整数测试

  • 字符串测试与逻辑测试

1、test命令

  • 测试表达式是否成立,若成立返回 0,否则返回其他数值
格式1:test 条件表达式
格式2:[ 条件表达式 ]

2、文件测试

[ 操作符 文件或目录 ]

常用的测试操作符

测试操作符 介绍
-d 测试是否为目录(Directory)
-e 测试目录文件是否存在(Exist)*建议使用
-a 测试目录文件是否存在(Exist)
-f 测试是否为文件(File)
-r 测试当前用户是否有权限取(Read)
-w 测试当前用户是否有权限入(Write)
-x 测试当前用户是否有执行权限(Excute)
-L 测试是否为软链接

属性测试补充

-s FILE #是否存在且非空

-t FD #FD 文件描述符是否在某终端已经打开

-N FILE #文件自从上一次被读取之后是否被修改过

-O FILE #当前有效用户是否为文件属主

-G FILE #当前有效用户是否为文件属组


条件测试

  • 判断某需求是否满足,需要由测试机制来实验,专用的测试表达式需要由测试命令辅助完成
测试过程 实现评估以便用在条件性环境下进行执行
若真 则状态码变量 $? 返回0
若假 则状态码变量 $? 返回1

3、条件测试操作

整数值比较

[ 整数1 操作符 整数2 ]

常用的测试操作符

测试操作符 介绍 符号
-eq 等于(Equal) =
-ne 不等于(Not Equal) !=
-gt 大于(Greater Than) >
-lt 小于(Lesser Than) <
-ge 大于或等于(Greater or Equal) =<
-le 小于或等于(Lesser or Equal) =>
字符串比较
格式1:
[ 字符串1 = 字符串2 ]或[ 字符串1 == 字符串2 ]
[ 字符串1 != 字符串2 ] #有数字最好用引号引用
格式2:
[ -z 字符串 ]#检查字符串是否为空Zero,还能判断变量是否空串
[ -n 字符串 ]#检查是否有字符串存在,如果需要用变量加双引号引用

常用的测试操作符
=:字符串内容相同
!=:字符串内容不同,!号表示取反的意思
-z:字符串内容为空

4、逻辑测试(短路运算)

格式1:[ 表达式1 ] 操作符 [ 表达式2 ] ...#
格式2:命令1 操作符 命令2 ...#如果是在一个表达式中命令1与命令2的操作符跟上-a-o的操作

常用的测试操作符

  • -a或&&:逻辑,"而且" 的意思,全真才为真
  • -o或||:逻辑,"或者" 的意思,有真即为真
  • !:逻辑否,取反不等于的意思

贰、if语句

1、if单分支语句

if 条件测试操作
  then 命令序列
fi

实例与单分支结构

监控磁盘使用情况


2、if双分支语句

if 条件测试操作
  then 命令序列1
  else 命令序列2
fi

实例与双分支结构

判断80端口是否在监听,若未开启则启动httpd服务


3、if多分支语句

if 条件测试操作1
  then 命令序列1
elif 条件测试操作2
  then 命令序列2
else 命令序列3
fi

实例与多分支结构

学生考试成绩判断


叁、case语句结构

case 变量值 in
模式1)
  命令序列1
  ;;
模式2)
  命令序列2
  ;;
  ......
*)
默认命令序列
esac

实例case语句结构

case支持的通配符:
*  任意长度的任意字符
?  任意单个字符
[] 指定范围内的任意单个字符
|  或,或者(例:a|b)

以上是关于Shell编程之条件语句的主要内容,如果未能解决你的问题,请参考以下文章

Shell编程之条件语句——if语句case语句

if语句 条件测试 shell编程之条件语句

Shell编程之条件语句

shell if 语句

Shell编程Shell中的流程控制之if语句

shell编程之条件语句