shell脚本条件测试语句,if,case

shell脚本条件测试语句,if,case

  • 一.条件测试
    • 1.1test命令
    • 1.2文件测试
      • 1.2.1文件测试常见选项
    • 1.3数值比较
    • 1.4字符串比较
    • 1.5逻辑测试
  • 二.if语句
    • 2.1单分支结构
    • 2.3多分支
  • 三.case语句

一.条件测试

1.1test命令

测试特定的表达式是否成立,当条件成立,测试语句的返回值为0,否则为其他数值。

格式:
test  条件表达式
或【条件表达式】(条件表达式的两边都需要有空格,且此方法更为常用)

1.2文件测试

1.2.1文件测试常见选项

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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

1.3数值比较

格式:
【整数1  操作符  整数2】

常见测试操作符

操作符含义
-eq等于
-ne不等于
-ltxiaoyu
-gt大于
-le小于或等于
-ge大于或等于

查询当前目录下的文件数是否大于10,如果大于,则进行提示

[root@localhost ~]#ls |wc -l
15
[root@localhost ~]#test `ls |wc -l` -gt 10 && echo 文件数大于10
文件数大于10

查看系统内存是否低于1024M ,如果低于则提示

[root@localhost ~]#free -mtotal        used        free      shared  buff/cache   available
Mem:           1758         359         790          17         608        1161
Swap:          3839           0        3839
[root@localhost ~]#free -m|grep "Mem"
Mem:           1758         359         791          17         608        1161
[root@localhost ~]#free -m|grep "Mem"|awk '{print $4}'
790
[root@localhost ~]#free=`free -m|grep "Mem"|awk '{print $4}'`
[root@localhost ~]#echo $free 
790
[root@localhost ~]#test `echo $free` -lt 1024 && echo 内存不足1024M
内存不足1024M
[root@localhost ~]#

1.4字符串比较

 格式:
【字符串1=字符串2】   # 判断是否相等
【字符串1!= 字符串2】   # 判断是否不等
【-z  字符串】                     # 判断字符串是否为空

操作符

操作符含义
=字符串内容相等
!=字符串内容不同,!号表示相反的意思
-z字符串为空
[root@localhost ~]#echo $LANG
zh_CN.UTF-8
[root@localhost ~]#test `echo $LANG`="us.en"&&echo 当前系统语言不是us.en,当前系统语言为`echo $LANG`
当前系统语言不是us.en,当前系统语言为zh_CN.UTF-8
[root@localhost ~]#

1.5逻辑测试

格式:
【表达式1】操作符 【表达式2】
命令1 操作符 命令2

操作符:

-a或&&逻辑与,而且的意思
-o或ll逻辑或,或者的意思
逻辑否

二.if语句

2.1单分支结构

格式
if  【条件判断式】;than当条件判断成立时,执行一条或多条命令
fi

如果只有一个判断式要进行,那么我们可以使用单分支的if语句,只有在条件成立时才会执行,否则不会执行任何操作
在这里插入图片描述

2.3多分支

if【条件判断式】;then当条件判断成立时,可以执行一条或多条命令elif【条件判断式二】;then当条件判断成立时,可以执行一条或多条命令else当上面条件判断都不成立时,可以执行一条或多条命令fi

如果数据需要进行多种不同得到判断,则可以使用多支结构嵌套使用
在这里插入图片描述

三.case语句

格式;
case 变量名称 in
模式1)命令序列;;
模式2)程序段;;*)不包含第一个变量内容与第一个变量内容的其他程序执行段默认程序段;;

esac

注意点:

  • case行首必须以单词“in”,每一模式必须以单个右括号结束
  • 双分号“;;”表示命令序列的结束
  • 模式字符串中,可以用方括号表示一个连续的范围,如“【0-9】”;还可以使用|表示或,比如a|b
  • 最后的)表示默认模式,其中的相当于通配符
    在这里插入图片描述
    在这里插入图片描述

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

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

相关文章

嵌入式是大坑吗?

嵌入式不是坑,但里面遍地是坑。一不小心,你就会掉进去。 嵌入式覆盖的范围太广,低端的产品太多。 单片机叫嵌入式,开发板叫嵌入式,摄像头叫嵌入式,手机、平板电脑、通讯基站、无人机、机器人、自动驾驶汽…

PEFD-多投影蒸馏详细论文与代码解读(Improved Feature Distillation via Projector Ensemble)

论文链接:https://papers.nips.cc/paper_files/paper/2022/file/4ec0b6648bdf487a2f1c815924339022-Paper-Conference.pdf 源码链接:https://github.com/chenyd7/PEFD 文章目录 前言一、论文核心二、论文摘要三、论文内容四、集成投影方法五、源码环境安…

工程管理系统简介 工程管理系统源码 java工程管理系统 工程管理系统功能设计em

工程项目管理软件(工程项目管理系统)对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营,全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#xff…

Java基础入门篇——修饰符

在Java中,修饰符(Modifiers)是一种用于修改类、方法、变量和其他实体的访问权限、行为或特性的关键字。Java提供了一组修饰符,可以用于实现对代码的封装、继承、多态和访问控制等功能。 1、访问修饰符(Access Modifie…

使用雅克比矩阵计算Rossler映射的lyapunov exponent图谱

Rossler映射如下: matlab代码如下: clear;%% ===========初始化输入============== yinit = [0.1,0.1,0.1]; orthmatrix = [1 0 0;0 1 0;0 0 1];y = zeros(12,1); y(1:3) = yinit; y(4:12) = orthmatrix;mod = zeros(3,1); lp = zeros(3,1);%% ============迭代控制=======…

基于Spring Boot的招聘网站的设计与实现(Java+spring boot+MySQL)

获取源码或者论文请私信博主 演示视频: 基于Spring Boot的招聘网站的设计与实现(Javaspring bootMySQL) 使用技术: 前端:html css javascript jQuery ajax thymeleaf 微信小程序 后端:Java springboot框…

手把手教你搭建私服(Nexus)

私服是一台独立的服务器,用于解决团队内部的资源共享与资源同步问题。 1.Nexus Nexus是sonatype公司的一款maven私服产品。 1.1 下载地址 https://help.sonatype.com/repomanager3/product-information/download1.2 启动 nexus.exe /run nexus1.3 访问 & 登…

自动驾驶传感器选型

360的场景,避免有盲区,长距离 Lidar(激光雷达) 典型特点一圈一圈的,轮廓和很高的位置精度 禾赛的机械雷达 速腾的固态雷达 固态雷达是车规级的,车规级的意思是可以装到量产车上 Radar(毫米…

测试设计规范:优秀实践的全面指南

测试设计规范是一个定义了与测试项目相关的测试条件、详细的测试方法和高级测试用例的文档。它确定了要运行哪些测试套件和测试用例,以及要跳过哪些。 使用测试设计规范,可以简化对当前测试周期的理解。这个文档回答了像“我们在做什么?”,…

MySQL缓存策略

文章目录 一、MySQL缓存方案的作用二、提高MySQL访问性能的方式2.1 读写分离2.1.1 是什么?2.1.2 解决了什么?2.1.3 原理是什么? 2.2 连接池2.1.1 是什么?2.1.2 解决了什么?2.1.3 原理是什么? 2.3 异步连接2…

机器人CPP编程基础-03变量类型Variables Types

机器人CPP编程基础-02变量Variables 全文AI生成。 C #include<iostream>using namespace std;main() {int a10,b35; // 4 bytescout<<"Value of a : "<<a<<" Address of a : "<<&a <<endl;cout<<"Val…

W5500-EVB-PICO 做TCP Server进行回环测试(六)

前言 上一章我们用W5500-EVB-PICO开发板做TCP 客户端连接服务器进行数据回环测试&#xff0c;那么本章将用开发板做TCP服务器来进行数据回环测试。 TCP是什么&#xff1f;什么是TCP Server&#xff1f;能干什么&#xff1f; TCP (Transmission Control Protocol) 是一种面向连…

NOSQL——redis的安装,配置与简单操作

目录 一、缓存的相关知识 1&#xff09;缓存的概念 2&#xff09;系统缓存 buffer与cache&#xff1a; 3&#xff09;缓存保存位置及分层结构 DNS缓存 应用层缓存 数据层缓存 分布式缓存服务&#xff1a; 数据库&#xff1a; 硬件缓存 二、关系型数据与非关系型数据…

晨控CK-GW06-E01与汇川H5U系列PLC通讯手册

晨控CK-GW06-E01与汇川H5U系列PLC通讯手册 晨控CK-GW06-E01是一款支持标准工业通讯协议 EtherNet IP 的网关控制器,方便用户集成到PLC等控制系统中。本控制器提供了网络 POE 供电和直流电源供电两种方式&#xff0c;确保用户在使用无 POE 供电功能的交换机时可采用外接电源供电…

-bash: ./startup.sh: Permission denied解决

今天在Linux上启动Tomcat&#xff0c;结果弹出&#xff1a;-bash: ./startup.sh: Permission denied 的提示。 这是因为用户没有权限&#xff0c;而导致无法执行。用命令chmod 修改一下bin目录下的.sh权限就可以了。 在Tomcat的bin目录下 &#xff0c;输入命令行 &#xff1a;c…

竞赛项目 深度学习实现语义分割算法系统 - 机器视觉

文章目录 1 前言2 概念介绍2.1 什么是图像语义分割 3 条件随机场的深度学习模型3\. 1 多尺度特征融合 4 语义分割开发过程4.1 建立4.2 下载CamVid数据集4.3 加载CamVid图像4.4 加载CamVid像素标签图像 5 PyTorch 实现语义分割5.1 数据集准备5.2 训练基准模型5.3 损失函数5.4 归…

Linux 内存管理新特性 - Memory folios 解读 | 龙蜥技术

本文内容基于 Linux 5.16&#xff0c;folio 基础部分开始合入。截止到目前 Linux 6.5&#xff0c;folio 已经有很大进展&#xff0c;会在后续文章中介绍。作者&#xff1a;徐宇。 01 folio [ˈfoʊlioʊ] 是什么 引用 LWN: Memory folios &#xff1a;https://lwn.net/Articl…

基于大模型的数据血缘异常归因分析

近日&#xff0c;以“元数据技术及应用创新”为主题&#xff0c;最新一季StartDT Hackathon&#xff08;奇点云黑客马拉松&#xff09;正式收官。 本期黑客松共吸引了近50位选手参赛&#xff0c;有的在实时数仓领域显神通&#xff0c;有的则再次请出了大模型。这些小组都有个共…

利用自动校对软件优化新闻稿件的拼写和语法

利用自动校对软件优化新闻稿件的拼写和语法&#xff0c;您可以按照以下步骤进行&#xff1a; 1.选择适合的校对软件&#xff1a;市场上有多种拼写和语法校对软件可供选择。根据您的需求和预算&#xff0c;选择一个功能强大且适合新闻稿件的软件。 2.导入稿件&#xff1a;将待校…

日常BUG ——乱码

&#x1f61c;作 者&#xff1a;是江迪呀✒️本文关键词&#xff1a;日常BUG、BUG、问题分析☀️每日 一言 &#xff1a;存在错误说明你在进步&#xff01; 一、问题描述 A系统使用Feign调用B系统时&#xff0c;传递的String字符串&#xff0c;到了B系统中变为了乱…