2026/4/23 1:23:40
网站建设
项目流程
微信小程序网站建设小图标素材,如何做合作社网站,贵州省建设监理协会官方网站,服务平台官网Shell 中的判断语句#xff08;Conditionals#xff09;是控制脚本逻辑的核心。虽然它的功能和 Python 的 if 类似#xff0c;但语法结构非常严谨#xff0c;尤其是空格的要求极其严格。
我们可以把 Shell 的判断语句拆解为#xff1a;结构、比较符和文件检查三个部分。1.…Shell 中的判断语句Conditionals是控制脚本逻辑的核心。虽然它的功能和 Python 的if类似但语法结构非常严谨尤其是空格的要求极其严格。我们可以把 Shell 的判断语句拆解为结构、比较符和文件检查三个部分。1. 基础语法结构Shell 的if语句必须以if开头以fiif 的反写结尾。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正在使用多卡训练fi3. 字符串比较字符串比较则使用我们熟悉的符号或等于注意两边空格!不等于-z判断字符串是否为空常用语检查变量是否定义例子if[-z$EXP_NAME];thenecho错误实验名称不能为空exit1fi4. 文件检查Shell 的拿手好戏这是你在train.sh中最常用的功能专门用来判断磁盘上的文件状态选项作用-f判断是否为文件且存在 (file)-d判断是否为目录且存在 (directory)-e判断是否存在(exists)不管是文件还是目录-r/-w/-x判断是否有读/写/执行权限例子结合你的需求# 判断 stats.json 是否存在if[-fstats.json];thenecho文件已找到elseecho文件不存在fi5. 逻辑组合如果你需要同时判断两个条件可以使用-a(and)逻辑与-o(or)逻辑或或者使用更现代的[[ ]]双中括号结构它支持和||# 如果是文件 并且 变量 a 大于 10if[[-f$FILE$a-gt10]];thenecho满足双重条件fi6. 一个“潜规则”$?在 Shell 中每条命令执行完都会返回一个状态码存储在$?中。0代表成功True非 0代表失败False这和 Python 的逻辑0 为假非 0 为真是完全相反的因为在系统层面报错码通常是 1, 2, 3…而 0 标志着一切正常。