当前位置:网站首页>Shell编程条件语句
Shell编程条件语句
2022-08-01 21:16:00 【Y坚定的唯物主义者】
目录
一、条件测试
- 文件测试与整数测试
- 字符串测试与逻辑测试
要使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
学生考试成绩判断



圆的面积计算案例

边栏推荐
猜你喜欢
随机推荐
ORI-GB-NP半乳糖介导冬凌草甲素/姜黄素牛血清白蛋白纳米粒的研究制备方法
PyQt5 + MySQL5.8 【学生信息管理系统】【增删改查】
sizeof的详细解说和与strlen的区别
C陷阱与缺陷 第7章 可移植性缺陷 7.11 可移植性问题的一个例子
LeetCode·每日一题·1374.生成每种字符都是奇数个的字符串·模拟
响应式织梦模板美容整形类网站
C陷阱与缺陷 附录B Koenig和Moo夫妇访谈
LeetCode·32.最长有效括号·栈·动态规划
Appendix A printf, varargs and stdarg A.1 printf family of functions
线上一次JVM FullGC搞得整晚都没睡,彻底崩溃~
C专家编程 第1章 C:穿越时空的迷雾 1.4 K&R C
技术栈概览
案例:MySQL主从复制与读写分离
C Expert Programming Chapter 1 C: Through the Fog of Time and Space 1.1 The Prehistoric Phase of the C Language
R语言 数据的关系探索
C专家编程 第1章 C:穿越时空的迷雾 1.2 C语言的早期体验
51.【结构体初始化的两种方法】
磷酸化甘露糖苷修饰白蛋白纳米粒/卵白蛋白-葡聚糖纳米凝胶的
2022牛客多校联赛第五场 题解
C语言_typedef和结构体









