Shell编程条件语句

目录

一、条件测试

1.test命令

2.条件测试

常用的测试操作符

3.字符串比较

常用选项

4.逻辑测试

二、if语句 

1、if单分支语句

2、if双分支语句

3、if多分支语句

学生考试成绩判断

圆的面积计算案例

三、case语句

1.case的用法

2、case语句的格式

四、while 语句

while循环

语法结构(3种)


一、条件测试

  • 文件测试与整数测试
  • 字符串测试与逻辑测试

要使Shell脚本程序具备一定的“智能”,面临的第一个问题就是如何区分不同的情况以确定执行何种操作。

Shell 环境根据命令执行后的返回状态值($?)来判断是否执行成功,当返回值为 0 时表示成功,否则(非 0 值)表示失败或异常。使用专门的测试工具——test 命令,可以对特 定条件进行测试,并根据返回值来判断条件是否成立(返回值为 0 表示条件成立)。

1.test命令

测试表达式是否成立,若成立返回 0,否则返回其他数值

格式1:test 条件表达式
格式2:[ 条件表达式 ]

常用的测试操作符

Shell编程条件语句_第1张图片

 ① 执行条件测试操作以后,通过预定义变量 echo( $? )可以获得测试命令的返回值,而判断该条件是否成立。

 Shell编程条件语句_第2张图片

② [ ] 用法  中括号和表达式中间需要隔一个空格

属性测试
-s FILE #是否存在且非空

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

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

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

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

2.条件测试

判断某需求是否满足,需要由测试机制来实验,专用的测试表达式需要由测试命令辅助完成

常用的测试操作符

Shell编程条件语句_第3张图片

3.字符串比较

字符串比较通常用来检查用户输入、系统环境等是否满足条件,在提供交互式操作的Shell脚本中,也可用来判断用户输入的位置参数是否符合要求。字符串比较的常用操作选项如下。

  • 单个 括号([ ]) : 必须要有空格,两个字符或数字之间的比较左右必须有空格,
  • 条件判断:test 一种形式,[ ] 中间只能使用 = 和 != 比较字符串,如果使用 < 、 > 需要加转义字符 “ \ ” 。
  • 两个括号 ( [[ ]]) : 可以用于处理逻辑命令,也可以处理字符串是否相等,且使用 < 、> 不需要转义字符 “ \ ”。

常用选项

= 第一个字符串 和 第二个字符串相同
!= 第一个字符串与第二个字符串不相同,其中“ !”符号表示取反
-z 检查字符串是否为空(zero),对于未定义或赋予控制的变量将视为空串
格式1:
[ 字符串1 = 字符串2 ]或[ 字符串1 == 字符串2 ]
[ 字符串1 != 字符串2 ] #有数字最好用引号引用
格式2:
[ -z 字符串 ]#检查字符串是否为空Zero,还能判断变量是否空串
[ -n 字符串 ]#检查是否有字符串存在,如果需要用变量加双引号引用

4.逻辑测试

逻辑测试指的是判断两个或多个条件之间的依赖关系。当系统任务取决于多个不同的条件时,根据这些条件是否同时成立或者只要有其中一个成立等情况,需要有一个测试的过程。   
常用的逻辑测试操作如下,使用时放在不同的测试语句或命令之间。

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

 逻辑符&&

Shell编程条件语句_第4张图片

 逻辑符 ||

Shell编程条件语句_第5张图片

二、if语句 

1、if单分支语句

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

 Shell编程条件语句_第6张图片

2、if双分支语句

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

 Shell编程条件语句_第7张图片

3、if多分支语句

登录后复制 

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

实例与多分支结构

学生考试成绩判断

Shell编程条件语句_第8张图片

 Shell编程条件语句_第9张图片

Shell编程条件语句_第10张图片

圆的面积计算案例

Shell编程条件语句_第11张图片

三、case语句

1.case的用法

case语句可以使脚本程序的结构更加1清晰,层次分明,常用于服务的启动,重启,停止的脚本,有的服务不提供这种控制脚本,需要用case语句编写

case语句主要适用于以下情况:某个变量存在多种取值,需要对其中的每一种取值分别执行不同的命令序列,这种情况与多分支的if语句非常相似,只不过if语句需要判断多个不同的条件,二case语句只是判断一个变量的不同取值。

2、case语句的格式

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

简单的字符判断实验;

Shell编程条件语句_第12张图片

四、while 语句

while循环

1.语法结构
2.死循环

语法结构(3种)

while循环一般用于有条件判断的循环,若判断条件为真,则进入循环,当条件为假就跳出循环
语法结构.
while 表达式
do
        command
done

while死循环
while [ 1 -eq 1 ]    写一个永远为真的表达式,1等于1这个条件永远为真,所以这个脚本会一直循环下去。

Shell编程条件语句_第13张图片

 

你可能感兴趣的:(shell,测试工具,开发语言,linux)