shell脚本——条件语句

目录

一、条件语句

1、test命令测试条件表达式

2、整数数值比较

3、字符串比较

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

5、双中括号

二、if语句

1、 分支结构

1.1 单分支结果

1.2 双分支

1.3 多分支

2、case


一、条件语句

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

测试过程,实现评估布尔声明,以便用在条件性环境下进行执行

  • 若真,则状态码变量 $? 返回0
  • 若假,则状态码变量 $? 返回1

1、test命令测试条件表达式

格式1:test  [操作符选项]  条件表达式
格式2:[  操作符 条件表达式  ]

注意[ ]空格,否则会失败

常见的测试操作符含义
-d测试是否为目录(directory)
-e测试目录或文件是否存在(Exist)
-f测试是否为文件(File)
-r测试当前用户是否有权限读取(Read)
-w测试当前用户是否有权限写入(Write)
-x测试当前用户是否有权限执行(eXcute)
-L测试是否为软连接文件
-nt判断文件A是否比文件B新
-ot判断文件A是否比文件B旧
-ef判断两个文件是否为同一文件

 属性测试补充:
-s FILE #是否存在且非空
-t fd #fd 文件描述符是否在某终端已经打开
-N FILE #文件自从上一次被读取之后是否被修改过
-O FILE #当前有效用户是否为文件属主
-G FILE #当前有效用户是否为文件属组

示例1:判断条件表达式是文件还是目录

2、整数数值比较

格式:
[ 整数1 操作符 整数2 ]  

 常见测试操作符:

操作符含义
-eq等于(Equal)
-ne不等于(Not Equal)
-lt小于(Leser Than)
-gt大于(Greater Than)
-le小于或等于(Lesser or Equal)
-ge大于或等于(Greater or Equal)

3、字符串比较

常用的测试操作符

  • =:字符串内容相同

  • !=:字符串内容不同,! 号表示相反的意思

  • -z:字符串内容为空

  • -n: 字符是否存在

格式

[ 字符串1 = 字符串2 ] 是否相同

[ 字符串1 != 字符串2 ] 是否不相同

[ -z 字符串 ] 是否为空

[ -n 字符串 ] 字符是否存在

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

格式:
[ 表达式1 ]  操作符 [ 表达式2 ]
命令1 操作符 命令2 

常见条件

  • -a或&&:逻辑与,“而且”的意思全真才为真
  • -o或||:逻辑或,“或者”的意思一真即为真
  • !:逻辑否

5、双中括号

[[ expression ]] 用法
== 左侧字符串是否和右侧的PATTERN相同
 注意:此表达式用于[[ ]]中,PATTERN为通配符
=~ 左侧字符串是否能够被右侧的正则表达式的PATTERN所匹配
 注意: 此表达式用于[[  ]]中;扩展的正则表达式

二、if语句

1、 分支结构

1.1 单分支结果

如果只有一个判断式要进行,那么我们可以使用单分支的 if 语句

格式:
if [ 条件判断式 ]; then#当条件判断成立时,可以进行的命令工作内容
fi 					#这里将if反过来写,结束if语句的意思

1.2 双分支

双分支if 判断条件; then条件为真的分支代码else条件为假的分支代码fi

1.3 多分支

多分支if 判断条件1
then条件1为真的分支代码elif 判断条件2
then条件2为真的分支代码elif 判断条件3;then条件3为真的分支代码...
else以上条件都为假的分支代码  托底fi

2、case

格式

case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esacread -p          icase $i in
PAT1)分支1;;
PAT2)分支2;;
...
*)默认分支;;

case支持glob风格的通配符:
* 任意长度任意字符
? 任意单个字符
[0-9] 指定范围内的任意单个字符
|   或者,如: a|b

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/654354.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1002. HarmonyOS 开发问题:鸿蒙 OS 技术特性是什么?

1002. HarmonyOS 开发问题:鸿蒙 OS 技术特性是什么? 硬件互助,资源共享 分布式软总线 分布式软总线是多种终端设备的统一基座,为设备之间的互联互通提供了统一的分布式通信能力,能够快速发现并连接设备,高效地分发…

计算机网络——网络层(2)

计算机网络——网络层(2) 小程一言专栏链接: [link](http://t.csdnimg.cn/ZUTXU) 网络层——控制平面概述路由选择转发表路由协议路由信息的交换小结 路由选择算法常见的路由选择算法距离矢量路由算法工作原理优缺点分析 链路状态路由算法基本工作原理优…

【详解】贪吃蛇游戏----下篇(完整源码)

目录 引入: 本片文章目的: 整个游戏的实现流程图如下: 游戏实现 GameRun PrintHelpInfo Pause NextIsFood printSnake EatFood NoFood KillByWall KillBySelf GameRun GameEnd 总代码: (1&#xff09…

pcie基础知识

文章目录 总线PCIEPCIE对应版本速率pcie拓扑linux查看pcie设备PCIE配置空间BAR(基地址寄存器) 总线 什么是总线 总线就是电脑内部交互的通道。 最开始CPU连接声卡或者网卡用的是不同接口,比如你声卡坏了,换一个声卡,接…

二叉搜索树操作题目:二叉搜索树中的插入操作

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题:二叉搜索树中的插入操作 出处:701. 二叉搜索树中的插入操作 难度 3 级 题目描述 要求 给定二叉搜索…

C# 一个快速读取写入操作execl的方法封装

这里封装了3个实用类ExcelDataReaderExtensions,ExcelDataSetConfiguration,ExcelDataTableConfiguration和一个实用代码参考: using ExcelDataReader; using System; using System.Collections.Generic; using System.Linq; using System.T…

别再做“背锅侠”!软件测试工程师被开发吐槽,如何应对?

作为一名软件测试工程师,我们的角色可以算是“战场上的后勤”,战役的胜败和所有团队人员都息息相关。但是难免碰到战役失败后,很多团队互相推脱的局面,而测试人员就是所有团队中的弱势群体,自然是首当其冲的背锅侠&…

扫雷游戏(C语言)

目录 一、前言: 二、游戏规则: 三、游戏前准备 四、游戏实现 1、打印菜单 2、初始化棋盘 3、打印棋盘 4、布置雷 5、排雷 五、完整代码 一、前言: 用C语言完成扫雷游戏对于初学者来说,难度并不是很大,而且通…

一份轴承振动数据集摘引 - XJTU-SY2019

1.原始引用 我第一次看到这个数据集是在知乎: XJTU-SY数据集轴承故障诊断 - 知乎XJTU-SY数据集包含了3种工况下的15个滚动轴承的全寿命周期振动信号,且明确标注了每个轴承的失效部位,相关论文如下:[1]雷亚国,韩天宇,王彪,李乃鹏…

DS:经典算法OJ题(1)

创作不易,友友们给个三连呗!! 本文为经典算法OJ题练习,大部分题型都有多种思路,每种思路的解法博主都试过了(去网站那里验证)是正确的,大家可以参考!! 一、移…

常用芯片学习——LM2596芯片

LM2596 3A降压型稳压器 使用说明 LM2596开关电压调节器是降压型电源管理单片集成电路,能够输出最大3A的驱动电流,同时具有很好的线性和负载调节特性。芯片按照输出版本可分为四种,分别是3.3V、5V、12V、ADJ(可调版本&#xff09…

一文读懂Python中的映射

python中的反射功能是由以下四个内置函数提供:hasattr、getattr、setattr、delattr,改四个函数分别用于对对象内部执行:检查是否含有某成员、获取成员、设置成员、删除成员。 获取成员: getattr class Foo:def __init__(self, name, age):se…

【command】使用nr简化npm run命令

参考文章 添加 alias nrnpm run通过alias启动命令可以帮助我们节省运行项目输入命令的时间 $ cd ~ $ vim .bash_profile $ source ~/.bashrc

应急响应-流量分析

在应急响应中,有时需要用到流量分析工具,。当需要看到内部流量的具体情况时,就需要我们对网络通信进行抓包,并对数据包进行过滤分析,最常用的工具是Wireshark。 Wireshark是一个网络封包分析软件。网络封包分析软件的…

isctf---crypto

夹里夹气 可以发现是摩斯密码 得到flag easy_rsa nc连接 rsa_d nc连接 计算d 七七的欧拉 task import gmpy2 import libnum from crypto.Util.number import *flagbISCTF{*************} mbytes_to_long(flag)plibnum.generate_prime(1024) elibnum.generate_prime(51…

NPDP证书:让你的职业生涯飞升!

🌟没错!NPDP证书正在成为产品经理们的“新宠”!越来越多的同行们纷纷选择考取NPDP证书,为什么这么火爆?一起来探究下吧! 🚀NPDP认证:产品经理的国际通行证 📍NPDP&#x…

快速掌握PHP:用这个网站,让学习变得简单有趣!

介绍:PHP是一种广泛使用的开源服务器端脚本语言,特别适合Web开发。 PHP,全称为Hypertext Preprocessor,即超文本预处理器,是一种嵌入在HTML中的服务器端脚本语言。它主要用于管理动态内容和数据库交互,使得…

【GAMES101】Lecture 09 纹理贴图 点查询与范围查询 Mipmap

目录 纹理贴图 纹理放大-双线性插值 点采样纹理所带来的问题 Mipmap 各向异性过滤 纹理贴图 我们在之前的着色里面说过如何给物体上纹理,就是对于已经光栅化的屏幕点,就是每个像素的中心,去寻找对应纹理的映射位置的纹理颜色&#xff0…

Redis系列-数据结构篇

数据结构 string&#xff08;字符串&#xff09; redis的字符串是动态字符串&#xff0c;类似于ArrayList&#xff0c;采用预分配冗余空间的方式减少内存的频繁分配。 struct SDS<T>{ T capacity; T len; byte flags; byte[] content; } 当字符串比较短时&#xff0c…

【Apache POI】百万级数据导出Excel,并含有折线等图表

需求概要 最近接到一个需求&#xff0c;概要来讲就是实现百万级数据导出Excel&#xff0c;并根据其中的数据项自动生成折线图等图表。经技术调研&#xff0c;针对内存、性能等要素&#xff0c;Apache POI此技术可完成此需求。 Apache POI是Apache软件基金会的开放源码函式库&am…