news 2026/5/24 10:09:47

shell脚本中的判断语句

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
shell脚本中的判断语句

Shell 中的判断语句(Conditionals)是控制脚本逻辑的核心。虽然它的功能和 Python 的if类似,但语法结构非常严谨,尤其是空格的要求极其严格。

我们可以把 Shell 的判断语句拆解为:结构比较符文件检查三个部分。


1. 基础语法结构

Shell 的if语句必须以if开头,以fi(if 的反写)结尾。

if[条件];then# 条件为真时执行elif[其他条件];then# 其他条件为真时执行else# 以上都不满足时执行fi

⚠️ 致命细节:[之后和]之前必须有空格

  • 错误:if [$a==$b]
  • 正确:if [ $a == $b ]

2. 数值比较(重点:不同于 Python)

在 Shell 的[ ]表达式中,数字比较不使用><,而是使用字母缩写:

符号含义对应英文Python 对应
-eq等于equal==
-ne不等于notequal!=
-gt大于greaterthan>
-ge大于等于greaterequal>=
-lt小于lessthan<
-le小于等于lessequal<=

例子:

if[$NUM_DEVICES-gt1];thenecho"正在使用多卡训练"fi

3. 字符串比较

字符串比较则使用我们熟悉的符号:

  • ===:等于(注意两边空格)
  • !=:不等于
  • -z:判断字符串是否为(常用语检查变量是否定义)

例子:

if[-z"$EXP_NAME"];thenecho"错误:实验名称不能为空!"exit1fi

4. 文件检查(Shell 的拿手好戏)

这是你在train.sh中最常用的功能,专门用来判断磁盘上的文件状态:

选项作用
-f判断是否为文件且存在 (file)
-d判断是否为目录且存在 (directory)
-e判断是否存在(exists),不管是文件还是目录
-r/-w/-x判断是否有读/写/执行权限

例子(结合你的需求):

# 判断 stats.json 是否存在if[-f"stats.json"];thenecho"文件已找到"elseecho"文件不存在"fi

5. 逻辑组合

如果你需要同时判断两个条件,可以使用:

  • -a(and):逻辑与
  • -o(or):逻辑或

或者使用更现代的[[ ]](双中括号)结构,它支持&&||

# 如果是文件 并且 变量 a 大于 10if[[-f"$FILE"&&$a-gt10]];thenecho"满足双重条件"fi

6. 一个“潜规则”:$?

在 Shell 中,每条命令执行完都会返回一个状态码,存储在$?中。

  • 0:代表成功(True)
  • 非 0:代表失败(False)

这和 Python 的逻辑(0 为假,非 0 为真)是完全相反的,因为在系统层面,报错码通常是 1, 2, 3…,而 0 标志着一切正常。


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/23 12:11:44

从0到1掌握社交网络分析:大数据技术实战指南

从0到1掌握社交网络分析&#xff1a;大数据技术实战指南 关键词&#xff1a;社交网络分析、大数据技术、图论、数据挖掘、网络结构、节点分析、链路预测 摘要&#xff1a;本文旨在为读者提供一份从基础概念到实战应用的社交网络分析与大数据技术结合的全面指南。首先介绍社交网…

作者头像 李华
网站建设 2026/5/19 20:43:02

Excalidraw呈现大模型推理流程:Token生成路径图

Excalidraw呈现大模型推理流程&#xff1a;Token生成路径图 在一场紧急的技术评审会上&#xff0c;团队正围绕一个新上线的大语言模型&#xff08;LLM&#xff09;的推理延迟问题展开讨论。有人提到“KV Cache复用似乎没有生效”&#xff0c;但不同成员对这一机制的理解存在偏差…

作者头像 李华
网站建设 2026/5/23 23:31:10

41、Windows 7 数据权限管理与共享全解析

Windows 7 数据权限管理与共享全解析 1. 继承权限 在 Windows 系统中,文件夹内的所有文件和文件夹默认会继承在安装时分配的权限,或者在修改文件夹权限时由用户分配的权限。对于磁盘或其他存储设备,继承权限的顶级文件夹是根文件夹。例如,C 盘的顶级文件夹是 C:\ ,分配给…

作者头像 李华
网站建设 2026/5/23 8:33:05

MiniMax通过上市聆讯:持有现金超10亿美元 阿里米哈游腾讯加持

雷递网 雷建平 12月21日通用人工智能&#xff08;AGI&#xff09;公司MiniMax&#xff08;稀宇科技&#xff09;今日通过上市聆讯&#xff0c;有望刷新记录&#xff0c;成为从成立到IPO历时最短的AI公司。截至2025年9月30日&#xff0c;MiniMax持有的现金结余10.46亿美元。Mini…

作者头像 李华
网站建设 2026/5/23 0:22:20

Excalidraw构建边缘计算拓扑:端边云协同模型

Excalidraw构建边缘计算拓扑&#xff1a;端边云协同模型 在智能制造工厂的一次架构评审会上&#xff0c;团队成员围坐在屏幕前——不是对着冷冰冰的UML图&#xff0c;而是一幅略带“手绘感”的系统拓扑草图。车间主管指着画布一角说&#xff1a;“这个边缘节点应该直接连PLC&am…

作者头像 李华
网站建设 2026/5/22 18:21:55

Gartner报告解读:Agentic AI将成2025智能制造主流,提示工程架构师如何布局?

Gartner报告解读:Agentic AI将成2025智能制造主流,提示工程架构师如何布局? 摘要/引言 在科技飞速发展的当下,智能制造领域正经历着前所未有的变革。Gartner报告指出,到2025年,Agentic AI将成为智能制造的主流技术。这一趋势对工程架构师而言,既带来了巨大的机遇,也提…

作者头像 李华