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:[ 条件表达式 ]

常用的测试操作符

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

 

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

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

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

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

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

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

2.条件测试

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

常用的测试操作符

3.字符串比较

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

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

常用选项

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

4.逻辑测试

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

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

 逻辑符&&

 逻辑符 ||

二、if语句 

1、if单分支语句

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

 

2、if双分支语句

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

 

3、if多分支语句

登录后复制 

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

实例与多分支结构

学生考试成绩判断

 

圆的面积计算案例

三、case语句

1.case的用法

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

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

2、case语句的格式

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

简单的字符判断实验;

四、while 语句

while循环

1.语法结构
2.死循环

语法结构(3种)

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

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

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值