当前位置: 首页 > news >正文

【Linux系列】Shell 脚本中的条件判断:`[ ]`与`[[ ]]`的比较

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
img

  • 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
  • 导航
    • 檀越剑指大厂系列:全面总结 java 核心技术,jvm,并发编程 redis,kafka,Spring,微服务等
    • 常用开发工具系列:常用的开发工具,IDEA,Mac,Alfred,Git,typora 等
    • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 新空间代码工作室:提供各种软件服务,承接各种毕业设计,毕业论文等
    • 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
    • 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

博客目录

      • 1. `[ ]`与`[[ ]]`的基本区别
      • 2. 使用`[ ]`进行条件判断
      • 3. 使用`[[ ]]`进行条件判断
      • 4. 变量和字符串的处理
      • 5. 条件判断的应用场景
      • 6. 结论

在编写 Shell 脚本时,条件判断是控制脚本流程的重要手段。Shell 提供了多种方式来进行条件判断,其中[ ][[ ]]是两种常见的条件测试表达式。
在这里插入图片描述

1. [ ][[ ]]的基本区别

[ ][[ ]]都可以用来测试条件,但它们之间存在一些差异:

  • 词法分析[ ]是传统的 Bourne shell 的测试命令,而[[ ]]是 Bash 提供的关键字,它提供了更多的功能和更强的字符串处理能力。
  • 模式匹配[[ ]]支持模式匹配,可以直接使用==!=进行字符串匹配,而[ ]则需要使用=!=
  • 空格和引号[[ ]]对空格和引号的处理更为灵活,即使测试表达式中有空格或引号,也不需要额外的转义。
  • 性能:在某些情况下,[[ ]]可能比[ ]执行得更快,因为它是 Bash 的内置功能。

2. 使用[ ]进行条件判断

在 Bash 中,[ ]用于基本的条件测试。以下是使用[ ]判断CURRENT_BRANCH变量是否不等于temp_agi_dev的示例:

if [ "$CURRENT_BRANCH" != "temp_agi_dev" ]; thenecho "CURRENT_BRANCH is not temp_agi_dev"
elseecho "CURRENT_BRANCH is temp_agi_dev"
fi

在这个示例中,我们使用!=运算符来判断CURRENT_BRANCH是否不等于temp_agi_dev。如果条件为真,则输出CURRENT_BRANCH is not temp_agi_dev;否则,输出CURRENT_BRANCH is temp_agi_dev

3. 使用[[ ]]进行条件判断

相比于[ ][[ ]]提供了更多的灵活性和功能。以下是使用[[ ]]进行相同判断的示例:

if [[ "$CURRENT_BRANCH" != "temp_agi_dev" ]]; thenecho "CURRENT_BRANCH is not temp_agi_dev"
elseecho "CURRENT_BRANCH is temp_agi_dev"
fi

[[ ]]中,我们同样使用!=运算符来进行判断。[[ ]]的优势在于它可以直接处理模式匹配,这使得它在处理字符串时更加方便。

4. 变量和字符串的处理

在 Shell 脚本中,正确处理变量和字符串是非常重要的。以下是一些最佳实践:

  • 空格:在变量和字符串之间留有空格,可以避免解析错误。例如,"$CURRENT_BRANCH" != "temp_agi_dev""$CURRENT_BRANCH"!="temp_agi_dev"更安全。
  • 双引号:使用双引号来包围变量,可以防止变量为空或包含空格时导致的错误。例如,"$CURRENT_BRANCH"$CURRENT_BRANCH更健壮。

5. 条件判断的应用场景

条件判断在 Shell 脚本中有着广泛的应用,例如:

  • 分支处理:根据条件选择不同的脚本分支执行。
  • 参数检查:在脚本执行前检查参数的有效性。
  • 环境配置:根据不同的环境变量配置脚本的行为。
  • 错误处理:根据条件判断是否发生错误,并执行相应的错误处理代码。

6. 结论

在 Shell 脚本编写中,[ ][[ ]]都是进行条件判断的重要工具。虽然[ ]在所有 Unix-like 系统中都可用,但[[ ]]提供了更多的功能和灵活性,特别是在字符串处理方面。因此,在 Bash 脚本中,推荐使用[[ ]]来进行条件判断,以利用其强大的功能和更好的性能。

觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

img

http://www.lryc.cn/news/509209.html

相关文章:

  • ArcGIS+MIKE21 洪水淹没分析、溃坝分析,洪水淹没动态效果
  • Git 的基本概念和使用
  • *【每日一题 基础题】 [蓝桥杯 2024 省 B] 好数
  • 对中文汉字排序的方法总结
  • 【解决报错】AttributeError: ‘NoneType‘ object has no attribute ‘group‘
  • 数据结构经典算法总复习(上卷)
  • JS获取URL中参数值的4种方法
  • 【面经】2024年软件测试面试题,精选100 道(附答案)
  • LabVIEW水泵性能测试系统
  • React 第十九节 useLayoutEffect 用途使用技巧注意事项详解
  • 重温设计模式--2、设计模式七大原则
  • 【NLP高频面题 - Transformer篇】Transformer的位置编码是如何计算的?
  • 基于SSM(Spring + Spring MVC + MyBatis)框架构建一个图书馆仓储管理系统
  • web的五个Observer API
  • Java基础:抽象类与接口
  • llama.cpp:PC端测试 MobileVLM -- 电脑端部署图生文大模型
  • Web前端基础知识(一)
  • 基于谱聚类的多模态多目标浣熊优化算法(MMOCOA-SC)求解ZDT1-ZDT4,ZDT6和工程应用--盘式制动器优化,MATLAB代码
  • 国标GB28181摄像机接入EasyGBS如何通过流媒体技术提升安防监控效率?
  • [Unity] ShaderGraph动态修改Keyword Enum,实现不同效果一键切换
  • Unity开发哪里下载安卓Android-NDK-r21d,外加Android Studio打包实验
  • FFTW基本概念与安装使用
  • 【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析
  • 教师如何打造专属私密成绩查询系统?
  • 【1224】C选填(字符串\0占大小,类大小函数调用,const定义常量,逗号表达式取尾,abs返回值
  • 本科阶段最后一次竞赛Vlog——2024年智能车大赛智慧医疗组准备全过程——终篇
  • 复合机器人:开启智能制造新时代
  • 装饰者模式
  • 【机器学习】当教育遇上机器学习:打破传统,开启因材施教新时代
  • 【蓝桥杯每日一题】分糖果——DFS