Shell脚本基础(4):条件判断

server/2024/11/23 16:51:46/

内容预览 ≧∀≦ゞ

  • Shell脚本基础(4):条件判断
    • 声明
    • 导语
      • 基本的if语句结构
      • 数值比较运算符
      • 文件测试运算符
      • 扩展:使用`elif`和`else`
      • 使用`&&`和`||`结合条件判断
      • 小结

Shell脚本基础(4):条件判断


声明

笔记内容参考了B站UP主 泷羽sec 的学习视频,如有侵权,将立即删除。
本笔记旨在促进网络安全学习,任何不当使用均与作者无关,请勿逾越法律红线,否则后果自负。
希望这些内容能对各位师傅有所帮助,欢迎您的点赞和评论!


导语

在Shell脚本中,条件判断是一项重要的功能,通常通过if语句来实现。条件判断语句用于根据不同的情况执行不同的代码,允许脚本在运行时做出决策。

在之前我们已经介绍过了算术运算符、逻辑运算符、字符串运算符等运算符,这些运算符也是条件判断中不可或缺的一部分。现在我们将进一步深入了解if语句的使用方法,帮助你编写更强大和灵活的Shell脚本


基本的if语句结构

if语句的基本语法格式如下:

if 条件; then# 条件为真时执行的命令
else# 条件为假时执行的命令
fi

if语句根据指定的条件判断其是否为真,如果条件成立,执行then后的命令,否则执行else后的命令。条件表达式通常通过方括号[ ]进行包裹。

数值比较运算符

Shell提供了多种用于比较数字大小的运算符。常见的数值比较运算符有:

  • -eq:相等
  • -ne:不等
  • -lt:小于
  • -le:小于或等于
  • -gt:大于
  • -ge:大于或等于

示例:

#!/bin/bashnum1=78
num2=98if [ $num1 -eq $num2 ]; thenecho "相等"
elseecho "不相等"
fi

在这个示例中,[ $num1 -eq $num2 ]判断num1num2是否相等。如果相等,则输出“相等”;否则,输出“不相等”。

文件测试运算符

Shell还提供了一些文件测试运算符,用于判断文件的存在、类型和权限等。常见的文件测试运算符有:

  • -e:文件是否存在
  • -f:是否为普通文件
  • -d:是否为目录
  • -r:是否可读
  • -w:是否可写
  • -x:是否可执行

示例:

#!/bin/bashif [ -e /tmp/testfile ]; thenecho "文件存在"
elseecho "文件不存在"
fi

该示例判断/tmp/testfile文件是否存在。如果文件存在,则输出“文件存在”;否则,输出“文件不存在”。

扩展:使用elifelse

在实际编程中,我们常常需要根据多个条件进行判断。此时可以使用elif(else if的缩写)来扩展if语句的判断条件,使得脚本能够更灵活地响应不同情况。

示例:

#!/bin/bashnum1=78
num2=89if [ $num1 -eq $num2 ]; thenecho "相等"
elif [ $num1 -gt $num2 ]; thenecho "num1 大于 num2"
elseecho "num1 小于 num2"
fi

在这个示例中,首先判断num1num2是否相等,如果不相等,接着判断num1是否大于num2,如果num1大于num2,输出“num1 大于 num2”。若以上两个条件均不满足,则执行else部分,输出“num1 小于 num2”。

使用&&||结合条件判断

Shell支持逻辑运算符&&(逻辑与)和||(逻辑或),可以在单行代码中使用它们来实现多个条件的判断和命令执行。

  • &&:如果前一个命令成功执行,则执行后一个命令。
  • ||:如果前一个命令失败,则执行后一个命令。

示例:

#!/bin/bashnum1=78
num2=89[ $num1 -eq $num2 ] && echo "相等" || echo "不相等"

这段代码判断num1num2是否相等,如果相等,则输出“相等”;否则,输出“不相等”。

小结

条件判断是Shell脚本中非常重要的一部分,它使得脚本能够根据不同的输入或环境情况做出决策。通过使用if语句与各种条件运算符(数值比较、字符串比较、文件测试等),我们可以让脚本更具灵活性和可扩展性。掌握这些基本的条件判断技巧后,可以在脚本中构建更加复杂和智能的逻辑。

最后,再次感谢您阅读本篇文章,如果您对文中内容有任何疑问或建议,欢迎在评论区与我交流!您的点赞和分享将是我继续创作的动力。


http://www.ppmy.cn/server/144308.html

相关文章

ElasticSearch学习篇17_《检索技术核心20讲》最邻近检索-局部敏感哈希、乘积量化PQ思路

目录 场景在搜索引擎和推荐引擎中,对相似文章去重是一个非常重要的环节,另外是拍照识花、摇一摇搜歌等场景都可以使用它快速检索。 基于敏感性哈希的检索更擅长处理字面上的相似而不是语义上的相似。 向量空间模型ANN检索加速思路 局部敏感哈希编码 随…

linux之调度管理(11)-cpu动态调频总体架构

一、cpufreq的背景 随着技术的发展,当前soc中的cpu主频一般都超过了1Ghz,而cpu的主频越高,其消耗的功耗也越大,这主要体现在以下两个方面: (1)cpu的运行频率越高,则晶体管在单位时间…

macOS 无法安装第三方app,启用任何来源的方法

升级新版本 MacOS 后,安装下载的软件时,不能在 ”安全性与隐私” 中找不到 ”任何来源” 选项。 1. 允许展示任何来源 点击 启动器 (Launchpad) – 其他 (Other) – 终端 (Terminal): 打开终端后,输入以下代码回车: …

Qt 实现网络数据报文大小端数据的收发

1.大小端数据简介 大小端(Endianness)是计算机体系结构的一个术语,它描述了多字节数据在内存中的存储顺序。以下是大小端的定义和它们的特点: 大端(Big-Endian) 在大端模式中,一个字的最高有效…

一文详解kafka知识点

目录 1、kafka定义 2、消息队列 2.1、产品选择 2.2、应用场景 2.3、消息队列的两种模式 3、kafka架构 4、kafka生产者 4.1、kafka生产者原理 4.2、kafka生产者异步发送 4.3、同步发送 4.4、分区 4.4.1、kafka分区好处 4.4.2、分区策略 4.4.3、自定义分区 4.5、生成吞…

算法学习笔记(七):常用数据结构、堆、栈、队列

一:常用技巧:枚举右,维护左 1.双变量问题 对于双变量问题,例如两数之和 ai aj t,可以枚举右边的aj,转换成单变量问题,也就是 在aj左边查找是否有 ai t - aj,这就可以用哈希表来维…

java excel 导入各种踩坑

在 Java 中处理 Excel 导入时,常见的问题(即“踩坑”)很多,下面列举了处理 Excel 导入时可能遇到的一些问题,并给出了解决方案和优化技巧。 1. POI 库与版本问题 Apache POI 是处理 Excel 的常用库,但是不…

【题解】—— LeetCode一周小结46

🌟欢迎来到 我的博客 —— 探索技术的无限可能! 🌟博客的简介(文章目录) 【题解】—— 每日一道题目栏 上接:【题解】—— LeetCode一周小结45 11.切棍子的最小成本 题目链接:1547. 切棍子的最…