Shell脚本之条件测试、if、case条件测试语句

Shell 脚本攻略--条件语句(条件测试、if、case) 文章目录前言一、条件测试—字符串比较二、条件测试—逻辑测试三、if语句1.单分支2.双分支3.多分支四、case分支语句1.基本格式2.示例 前言 我们前面已经学习了编写比较简单的shell脚本:各语句按照顺序依次来执行,从而实现“批量处理”的自动化过程,然而,这样比较“单一”的顺序结构写多了,你会不会觉得简单了点?这样,脚本过于机械化,像流水线一样,不够“智能”!那么,怎样才能从容的应对复杂的系统任务呢?我们接下来去学习如何进行条件测试操作,并通过正确使用if语句,从而使shell脚本具备一定的“判断”能 阅读详情

目录

一、条件测试

1.1test命令

1.2文件测试

1.2.1文件测试常见选项

1.3整数值比较

1.4字符串比较 

1.5逻辑测试

二、if语句

2.1单分支结构

2.2双分支结构 

2.3多分支结构

三、case语句


一、条件测试

1.1test命令

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

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

1.2文件测试

1.2.1文件测试常见选项

eg1:

 

eg2:

 

eg3:可以使用&&和echo一起用 

eg4:可以和||一起用

 

 eg5:比较两个文件

 

1.3整数值比较

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

常见测试操作符:

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

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

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


[root@localhost ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1823         330         804           9         688        1271
Swap:          3815           0        3815
[root@localhost ~]# free -m | grep "Mem"
Mem:           1823         330         804           9         688        1270
[root@localhost ~]# free -m | grep "Mem" | awk '{print $4}'
803
[root@localhost ~]# free=`free -m | grep "Mem" | awk '{print $4}'`
[root@localhost ~]# echo $free
803
[root@localhost ~]# test `echo $free` -lt 1024 && echo "内存不足1024M"
内存不足1024M

1.4字符串比较 

格式:
[ 字符串1 = 字符串2 ]             #判断是否相等
[ 字符串1 != 字符串2 ]             #判断是否不等
[ -z 字符串 ]                     #判断字符串内容是否为空

操作符:

 eg: 判断当前系统语言环境是否为“us.en”,如果不是则提示

[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

1.5逻辑测试

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

操作符:

二、if语句

2.1单分支结构

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

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

eg:使用单分支if语句判断test文件是否存在

[root@localhost ~]#if test -e data; then echo 文件存在; fi
文件存在
[root@localhost ~]# 

2.2双分支结构 

if [ 条件判断式 ]; then
    当条件判断成立时,可以执行一条或多条命令
else    
    当条件判断不成立时,可以执行一条或多条命令
fi         

在同一个数据的判断中,如果该数据需要进行两种不同的判断,我们就需要双分支if语句了:

eg: 判断用户输入的是否为yes 

 

2.3多分支结构

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

 如果数据需要进行多种不同的判断,则可以使用多分支结构 嵌套使用。

[root@localhost ~]#vim reboot1.sh 
 
read -p "请输入yes或no:" TEST
if [ $TEST = "yes" ]
   then
     echo 你输入的为$TEST!
   elif [ $TEST = "no" ]
      then
         echo 你输入的为$TEST!
else
   echo 你输入的${TEST}有错误,请重启输入yes或者no!  
fi 

 

 

三、case语句

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

注意点:

  • case行首必须以单词“in”,每一模式必须以单个右括号")"结束

  • 双分号";;"表示命令序列的结束

  • 模式字符串中,可以用方括号表示一个连续的范围,如"[0-9]";还可以使用竖杠|表示或,比如a|b

  • 最后的)表示默认模式,其中的相当于通配符

eg:

 

 

宏基因组功能注释实战:从CAZyme到VFDB的完整流程(含数据库下载与脚本优化) 本文详细介绍了宏基因组功能注释的完整流程,涵盖CAZyme、eggNOG、CARD和VFDB四大核心数据库的实战应用。从环境配置、数据库下载与预处理到注释流程执行与优化,提供了全面的操作指南和脚本优化建议,帮助研究人员高效完成宏基因组数据分析。特别针对CAZyme注释等关键步骤给出了参数优化方案和常见问题排查方法。 阅读详情

相关推荐

dify智能体:日志管理与标注功能详解

日志管理与标注功能是优化聊天助手、Agent、文本生成应用、Chatflow 和工作流等工具交互体验的关键。日志管理允许用户查看、修改和标注日志,帮助回顾和优化交互内容。用户可以通过点击👍或👎按钮快速标注满意度,标注后的日志可用于后续优化和分析。标注功能则支持用户对交互内容进行标记和调整,以提升模型输出质量。此外,用户还可以调整界面语言和时区设置,确保在熟悉的环境中操作。这些功能共同作用,显著提升了交互体验和模型性能。

zyx_bx的博客 2714

【Linux脚本篇】流程控制语句-if

在shell脚本应用中,if语句是最为常用的一种流程控制方式,用来根据特定的条件测试结果,分别执行不同的操作(如果......那么......)。根据不同的复杂程度,if语句的选择结构可以分为三种基本类型,适用于不同的应用场合。

大虾好吃吗 4206

手把手实战:RK3588上YOLOv8模型从训练到部署全流程解析

本文详细解析了在RK3588开发板上部署YOLOv8目标检测模型的全流程。从模型训练、正确导出适配的ONNX格式,到使用RKNN-Toolkit2进行模型转换与量化,最后在板卡上完成部署与性能测试。文章提供了完整的代码示例和关键避坑指南,帮助开发者高效实现嵌入式AI应用落地。

weixin_28224217的博客 408

【Linux基础及shell脚本】if流程控制语句

本博客详细介绍了Shell脚本中if及if-else流程控制语句的使用。首先,我们探讨了if语句的基本语法,以及如何处理单个和多个条件。接着,我们讨论了if-else语句,展示了如何用它处理各种条件。最后,我们通过10个实际示例,包含从基本到高级的不同场景,让读者更好地理解和应用这些语句。无论您是刚接触Shell脚本的新手,还是希望进一步提升技能的开发者,都能在此找到有价值的内容。

Ricky的博客 9351

Evolution of Heuristics: Towards Efficient Automatic Algorithm Design Using Large Language Model

启发式算法广泛用于处理复杂的搜索和优化问题。然而,启发式算法的手动设计通常非常耗费人力,需要丰富的工作经验和知识。本文提出了启发式算法的进化 (EoH),这是一种新颖的进化范式,它利用大型语言模型 (LLM) 和进化计算 (EC) 方法进行自动启发式设计 (AHD)。EoH 代表自然语言中的启发式概念,称为思想。然后由 LLM 将它们转换为可执行代码。进化搜索框架中思想和代码的演变使其在生成高性能启发式算法方面非常有效和高效。

weixin_43961909的博客 2166

具身智能中的运动控制如何入门?

本文提出计算机视觉(CV)与强化学习(RL)结合的机器人运动控制学习路径。强调工程实践导向,建议采用"算法-机器人-工程"三阶段学习法:基础阶段掌握RL核心算法(PPO/SAC)和机器人动力学;进阶阶段聚焦Sim2Real技术(域随机化、模仿学习)和仿真环境搭建;深耕阶段结合CV优势开发视觉闭环控制等创新方向。特别指出应避免纯理论学习,提倡"最小知识原则"的实践模式,通过具体项目(如四足机器人控制)串联知识体系。推荐以《现代机器人学》等工具书为参考,配合开源框架(Pi

CyberSoma的博客 323

Linux_shell脚本if语句详细教程

在 Linux Shell 脚本中,if 语句用于基于条件执行命令或代码块。

檬柠wan 4785

【DDR3 控制器设计】(1)MIG IP 核的详解与配置

2:1 比例的用户接口数据总线宽度是 MIG 内存接口宽度的 4 倍,比如 MIG 中配置的数据位宽是 16 位,而 DDR 双边采样,所以用户接口是 MIG 内存接口的 4 倍即数据位宽为 64 位,同理可以得到如果设置为 4:1 则是 8 倍的数据位宽即数据位宽为 128 位。这里选择不使用OFF。以下为 MIG 和 DDR 之间的连接框图,可以看到框图的左边是用户接口,中间是 MIG 核,右边是需要控制的 DDR 接口,用户只需要去配置使用 MIG 核,就可以对 DDR 进行控制读写等操作。

记录学习历程 5361

linux之基础shell脚本编程2 if语句循环判断

linux之基础shell脚本编程2 if语句循环判断

第九系艾文 3055

YOLOv9分割改进 ,YOLOv9分割改进主干网络为华为EfficientNet,助力涨点

EfficientNet论文中研究了卷积网络的缩放和,并证明对深度,宽度和分辨率复合缩放的重要性,因此精度和效率更好。为了阐述相关的原理,我们提出了简单有效的复合缩放方法,使得模型缩放具有一定设计准则,同时兼顾了模型的效率。我下文将 YOLOv9 分割模型改进主干网络为 EfficientNet 融合网络结构。论文地址代码地址下文都是手把手教程,跟着操作即可添加成功把环境配置好,数据集处理好,训练基本能成功,创作不易,请帮忙点一个爱心,关注我,带你不挂科!

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 942

置顶必读(2) | 《YOLOv11实战:从入门到深度优化》目录导航篇(持续更新中)

🏆 本文收录于 《YOLOv11实战:从入门到深度优化》 专栏。 本专栏系统梳理并持续复现全网各类 YOLOv11 / YOLO系列改进方案与实战案例,目前已覆盖 分类、检测、分割、追踪、关键点、OBB 检测 等多个方向。 内容坚持 持续更新 + 深度拆解 + 工程落地导向,不仅讲“怎么改”,更讲“为什么这样改、如何真正落地到项目中”。

**My Coding Family** 11万+

Linux:Linux操作系统流程控制语句-if语句使用介绍

本博客将介绍Linux操作系统中的流程控制语句-if语句的使用方法。我们将详细介绍单分支语句、双分支语句和多分支语句的结构和用法。此外,还会介绍文件比较、整数比对、字符对比和正则表达式的使用。通过学习这些内容,您将能够更好地掌握Shell脚本编写中的流程控制,实现条件判断和不同分支的执行。

算命de博客 2541

中科大大数据学院2023年保研夏令营机试题目【无offer,直接放题了~】(2023.07.22下午14:35-17:35考试)

给定一串数字,最后一个数是0表示结尾,表示数字串的终止,为无效数字。将该数字串存储在双向链表中,判断是否为回文串,若是,则输出Yes,否则输出No.

m0_51339444的博客 1922

Shell脚本之条件语句——条件测试、if语句、case语句

shell脚本之条件语句:条件测试、if、case语句,以及相关脚本

MONGJUK的博客 1191

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

shell脚本之条件测试、if、case条件测试语句

文章目录一、条件测试1.1 test 命令1.2 文件测试1.3 整数值比较1.4 字符串比较1.5 逻辑测试二、if 语句2.1 单分支结构2.2 双分支结构2.3 多分支结构总结 一、条件测试 1.1 test 命令 测试特定的表达式是否成立,当条件成立,测试语句的返回值为0,否则为其他数值 格式: test 条件表达式 或 [ 条件表达式 ] (条件表达式的两边都需要有空格,且此方法更为常用) 1.2 文件测试 文件测试指的是根据给定的路径名称,判断对应的是文件还是目录,或者判断文件是否可..

weixin_63634809的博客 989

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Shell脚本条件测试、if语句、case语句!

条件测试和if语句一、条件测试1.1文件测试1.2整数测试1.3字符串测试二、if语句2.1if语句脚本案例 一、条件测试 条件测试方式: test 条件表达式 [ 条件表达式 ] [root@localhost ~]# test a == b //测试a是否等于b [root@localhost ~]# echo $? //查看上条命令结果,非0表示错误,即a不等于b 1 [root@localhost ~]# test a != b [root@localhost ~]

weixin_55496718的博客 1006

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

shell脚本详解(二)——条件测试、if语句和case分支语句

shell脚本详解(二)——条件测试、if语句和case分支语句一、条件测试1、test命令2、文件测试3、整数值比较4、字符串比较5、逻辑测试二、if条件语句1、单分支2、双分支3、多分支4、例题①、例题1②、例题2③、例题3三、case语句1、结构2、例题:①、例题1②、例题2 一、条件测试 1、test命令 测试表达式是否成立,若不成立返回0,否则返回其他数值 2、文件测试 常用操作符 说明 -d 测试是否为目录(Directory) -e 测试目录或文件是否存在(Exi

想成功,靠自己 2982

【shell 脚本条件测试 if case条件测试语句】

2.文件测试 要使shell脚本程序具备一定的"智能",面临的第一个问题就是如何区分不同的情况以确定执行何种操作。例如,当磁盘使用率超过95%时,发送告警信息;当备份目录不存在时,能够自动创建;当源码编译程序时,若配置失败则不再继续安装等Shell环境根据命令执行后的返回状态值($?)来判断是否执行成功,当返回值为0时表示成功,否则(非0值)表示失败或异常。使用专门的测试工具—test命令,可以对特定条件进行测试,并根据返回值来判断条件是否成立(返回值为 0表示条件成立) 示例1: :查询当前目录下的文件数

zhangyuanzhangy的博客 217

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

如果只有一个判断式要进行,那么我们可以使用单分支的if语句,只有在条件成立时才会执行,否则不会执行任何操作。测试特定的表达式是否成立,当条件成立,测试语句的返回值为0,否则为其他数值。如果数据需要进行多种不同得到判断,则可以使用多支结构嵌套使用。查询当前目录下的文件数是否大于10,如果大于,则进行提示。查看系统内存是否低于1024M ,如果低于则提示。

fyb012811的博客 213

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

shell脚本— 条件测试 ,if语句,case语句 文章目录shell脚本--- 条件测试 ,if语句,case语句条件测试test命令文件测试整数值比较字符串比较常见的测试符操作条件测试操作逻辑测试if语句的结构单分支结构双分支结构多分支结构case语句结构 条件测试 文件测试 整数测试 字符串测试 逻辑测试 test命令 测试表达式是否成立,若成立返回0,否则返回非0 test 条件表达式 或 [ 条件表达式 ] 文件测试 [ 操作符 文件或目录 ] 注意空格,否则会失败测试是

weixin_44938203的博客 299
上一篇: Shell编程规范及变量
下一篇: Shell中括号的含义
Au杨
博客等级 码龄6年 37粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值