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

news2024/11/25 2:57:33

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 -m
              total        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.coloradmin.cn/o/865636.html

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

相关文章

InVEST模型使用

第一天: 1. 生态系统服务理论联系实践案例讲解 2. InVEST模型的开发历程、不同版本的差异及对数据需求的讲解 3. InVEST所需数据的要求(分辨率、格式、投影系统等)、获取及标准化预处理讲解 4. InVEST运行常见问题及处理解决方法讲解 5.…

【C++】数据结构与算法:常用查找算法

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍常用查找算法。 学其所用,用其所学。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下次更新不迷路&#x1…

【果树农药喷洒机器人】Part6:静态PWM变量喷药实验

文章目录 一、引言二、静态PWM变量喷药实验2.1搭建喷药实验平台2.2变量喷药控制实验 一、引言 为综合评估所设计的果树喷药机器人变量喷药效率和质量,验证系统的控制性能和实际作业的可行性,本章开展果树变量喷药实验。首先,通过静态的PWM变…

Mongodb 分页查询数据重复

(学习的本质,不在于记住哪些知识,而在于它触发了你的思考——迈克尔桑德尔) mongodb排序的限制 相关链接 最多对32个键进行排序排序一致性 其中排序一致性指的是,如果被排序的字段值是重复的,那么在进行…

不同路径数

希望这篇题解对你有用,麻烦动动手指点个赞或关注,感谢您的关注~ 不清楚蓝桥杯考什么的点点下方👇 考点秘籍 想背纯享模版的伙伴们点点下方👇 蓝桥杯省一你一定不能错过的模板大全(第一期) 蓝桥杯省一你一定不能错过的模板大全…

C指针:程序员的神奇箭头,穿越内存的冒险之旅!

目录 🕵️‍♂️ 引言:指针,那些指向星星的小箭头! 一、🎯 探索箭头:指针的基础知识 1.1 指针是什么? 1.2 解引用操作符:* 是关键 1.3 指针的比较和运算 1.4 空指针&#xff1a…

Gopeed-全平台开源高速下载器 支持(HTTP、BitTorrent、Magnet)协议

一、软件介绍 Gopeed(全称 Go Speed),是一款由GolangFlutter开发的高速下载器,开源、轻量、原生,支持(HTTP、BitTorrent、Magnet 等)协议下载,并且支持全平台使用,底层使…

淘宝商品详情接口(商品列表,APP详情接口)返回示例说明,PC端和APP端

淘宝商品详情包括以下信息: 1. 商品标题:商品的名称或标题,用于描述商品的特点和功能。 2. 商品价格:商品的销售价格,包括原价和促销价等。 3. 商品图片:展示商品的照片或图像,以便顾客可以更…

Pinia的使用,只需四步轻松上手

Pinia与vuex相比,少了mutation和命名空间,支持ts。更适配vue3. 基本使用: 1.创建一个store文件夹,引用createPinia()方法并暴露出去(图一) 2.main.ts下引用createPinia并注册use一下(图2&#x…

SpringBoot启动报错:java: 无法访问org.springframework.boot.SpringApplication

报错原因:jdk 1.8版本与SpringBoot 3.1.2版本不匹配 解决方案:将SpringBoot版本降到2系列版本(例如2.5.4)。如下图: 修改版本后切记刷新Meavn依赖 然后重新启动即可成功。如下图:

【Matlab】PSO优化(单隐层)BP神经网络

上一篇博客介绍了BP-GA:BP神经网络遗传算法(BP-GA)函数极值寻优——非线性函数求极值,本篇博客将介绍用PSO(粒子群优化算法)优化BP神经网络。 1.优化思路 BP神经网络的隐藏节点通常由重复的前向传递和反向传播的方式来决定&#…

00 - 环境配置

1. 环境说明 使用git gitee 2. 安装配置 ubuntuVM-8-3-ubuntu:~/wuxiang/git$ git --version git version 2.25.1 ubuntuVM-8-3-ubuntu:~/wuxiang/git$2.1 配置user信息 ubuntuVM-8-3-ubuntu:~/wuxiang/git$ git config --global user.name wuxxxxx ubuntuVM-8-3-ubuntu:~…

【遍历】非递归法 二叉树的前中后序遍历

文章目录 非递归法前序遍历后序遍历中序遍历 递归法DFS 非递归法 通过栈Stack来模拟递归。 前序遍历 LeetCode 144 前序遍历:1 2 3 定义:存放答案的List、栈Stack 将root入栈出栈:node,为null则舍弃将node放入list将node.r…

【Spring】-Spring项目的创建

作者:学Java的冬瓜 博客主页:☀冬瓜的主页🌙 专栏:【Framework】 主要内容:创建spring项目的步骤:先创建一个maven项目,再在pom.xml中添加spring框架支持,最后写一个启动类。 文章目…

程序猿成长之路之密码学篇-分组密码加密模式及IV(偏移量)的详解

Cipher.getInstance("AES/ECB/PKCS5Padding"); Cipher cipher Cipher.getInstance("AES/CBC/PKCS5Padding"); 在进行加解密编程的时候应该有很多小伙伴接触过以上的语句,但是大伙儿在编码过程中是否了解过ECB/CBC的含义、区别以及PKCS5Padding…

学生公寓一进四出智能电表的功能介绍

学生公寓一进四出智能电表石家庄光大远通电气有限公司模块时间控制功能:可设定每个宿舍自动断电和供电的时间;也可以设定某时间段内为小功率输出,设定时间后自动恢复正常供电。权限管理:管理者可对操作人员设定不同操作权限; 软件…

毅哥铡特:修改后的Bellmanford最短路径路由动画演示

修改背景:毅哥铡特自带的《routing_bellmanford.cpp》,按路由跳数进行更新路由表,但是,卫星互联网的卫星路由器节点,可能需要考虑传播传输时延,对应的,可能需要按照两个网络节点的距离来更新路由…

OpenEuler 上安装redis服务

访问redis的下载地址 Index of /releases/地址:Index of /releases/ 选择对应的版本。我选择5.0的版本。 下载对应的版本redis wget https://download.redis.io/releases/redis-5.0.8.tar.gz 解压 redis tar -zxvf redis-5.0.9.tar.gz 进入redis目录 cd redis-5…

使用 VScode 开发 ROS 的Python程序(简例)

一、任务介绍 本篇作为ROS学习的第二篇,是关于如何在Ubuntu18.04中使用VSCode编写一个Python程序,输出“Hello!”的内容介绍。 首先我们来了解下ROS的文件系统,ROS文件系统级指的是在硬盘上ROS源代码的组织形式,其结构…

不用技术代码,如何制作成绩查询系统?

为了解决学校无力承担传统学生考试成绩查询平台的高昂费用,老师们可以考虑使用易查分这样的工具来免费制作一个学生考试成绩查询平台。易查分是一种简单易用的在线成绩查询系统,可以帮助老师们快速创建一个个性化的学生考试成绩查询平台。 使用易查分制作…