Shell脚本结构化命令详解:if-then、test、复合条件与高级判断

发布时间:2026/9/3 10:08:51

Shell脚本结构化命令详解:if-then、test、复合条件与高级判断
一、if-then 语句在编程中结构化命令是指能够对命令的执行流程施加逻辑控制的语句。最基本的结构化命令就是 if-then。基本语法if commandthencommandsfifi 表示 if 语句块的结束。核心原理Bash Shell 的 if 语句并不是直接判断条件是否为真而是运行 if 后面的命令然后检查该命令的退出状态码如果状态码为 0命令执行成功则执行 then 后面的命令如果状态码为 非0命令执行失败则跳过 then 后面的命令这种设计意味着任何命令都可以放在 if 后面——只要命令成功执行then 部分就会运行。简写形式将 then 放在同一行if command; thencommandsfi二、if-then-else 语句当命令成功执行时执行一组操作失败时执行另一组操作就需要 if-then-elseif commandthencommands # 命令成功时执行elsecommands # 命令失败时执行fi三、elif 多分支语句当需要判断多个条件时可以使用 elif 来扩展 else 部分避免嵌套多层 ifif command1thencommandselif command2thencommandselif command3thencommandsfi四、test 命令if-then 只能判断命令的退出状态码而 test 命令提供了测试不同条件的能力。当 test 中列出的条件成立时test 返回退出状态码 0if-then 就会执行 then 部分。两种等价语法if test conditionthencommandsfi或使用方括号更常用if [ condition ]thencommandsfi注意方括号与条件内容之间必须有空格。[ condition ] 正确[condition] 错误。test 命令可以判断三类条件注意test 命令只能处理整数不能用于浮点数比较。字符串相等性所有的标点和大小写情况都考虑在内字符串顺序大于号和小于号必须转义/大小写字母排序与sort命令恰好相反字符串大小-n和-z可以检查一个变量是否含有数据。测试Linux文件系统上文件和目录的状态。五、复合条件测试if-then 允许使用布尔逻辑组合多个测试条件AND与 [ condition1 ] [ condition2 ] — 两个条件都满足时才返回 TRUEOR或 [ condition1 ] || [ condition2 ] — 任一条件满足时返回 TRUE示例六、双括号和双方括号双括号 (( expression )) — 高级数学运算test 命令只能做简单的整数比较而双括号命令支持更多数学运算符且不需要转义大于号和小于号。if (( $num 10 )); thenecho “num 大于 10”fiif (( $num % 2 0 )); thenecho “num 是偶数”fi双括号中支持的运算符包括、–、!、~、**幂运算、、、、|、、|| 等。双方括号 [[ expression ]] — 高级字符串比较双方括号支持模式匹配如通配符且不需要转义大于号和小于号。if [[ $str “hello” ]]; thenecho “字符串是 hello”fi#使用通配符进行模式匹配if [[ $str h* ]]; thenecho “字符串以 h 开头”fi

相关新闻

商品比价业务发展前景:电商时代刚需解决方案

商品比价业务发展前景:电商时代刚需解决方案

2026/8/27 12:51:50

1. 全域数据采集层(实时抓取引擎)双采集模式:官方开放 API 为主、合规分布式集群补充,规避反爬风险分布式异步抓取集群 动态代理 IP 池,动态调整抓取频率,爆款商品秒级更新多商品录入方式:SKU …

数字I/Q解调接收机对比:4种方案A/D采样率与滤波器需求量化分析

数字I/Q解调接收机对比:4种方案A/D采样率与滤波器需求量化分析

2026/8/23 0:38:50

数字I/Q解调接收机架构深度对比:从采样率到滤波器设计的工程实践1. 引言:数字I/Q解调的技术演进与挑战在无线通信系统设计中,I/Q解调技术始终扮演着核心角色。传统模拟I/Q解调长期面临通道失配的困扰——幅度不平衡、相位误差和直流偏移等问题…

爱思控无刷电机驱动器的软件驱动

爱思控无刷电机驱动器的软件驱动

2026/9/1 1:56:49

以前调过好几款CAN驱动的无刷电机驱动器,把驱动软件分享下,使用的是32位嵌入式单片机平台。话不多说,以下是爱思控的驱动代码。.c文件:(内部还有一键配置的函数:drdr_hw_initAqmdWalkConfig(),这…

终极隐私工具用户体验设计指南:如何打造易用的隐私保护平台

终极隐私工具用户体验设计指南:如何打造易用的隐私保护平台

2026/9/3 10:06:48

终极隐私工具用户体验设计指南:如何打造易用的隐私保护平台 在当今数字时代,隐私保护已成为用户最关心的问题之一。Awesome Privacy作为一个精心策划的隐私与安全软件和服务列表,旨在帮助用户摆脱大数据监控,选择尊重隐私的服务。…

幻兽帕鲁服务器一键部署指南:低成本自建,告别延迟与掉线

幻兽帕鲁服务器一键部署指南:低成本自建,告别延迟与掉线

2026/9/3 10:06:48

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

三相正弦逆变技术:从SPWM到SVPWM的工程实践指南

三相正弦逆变技术:从SPWM到SVPWM的工程实践指南

2026/9/3 10:06:48

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

Awesome Privacy 许可证合规工具评测:自动化软件比较

Awesome Privacy 许可证合规工具评测:自动化软件比较

2026/9/3 10:06:48

Awesome Privacy 许可证合规工具评测:自动化软件比较 开源项目的许可证合规性管理是维护软件合法性和社区信任的关键环节。随着项目规模扩大,手动检查许可证兼容性变得低效且易出错。本文将对比 Awesome Privacy 项目中集成的两款自动化合规工具&#x…

Awesome Privacy 代码质量改进:隐私工具的重构策略

Awesome Privacy 代码质量改进:隐私工具的重构策略

2026/9/3 10:06:48

Awesome Privacy 代码质量改进:隐私工具的重构策略 隐私工具的代码质量直接关系到用户数据安全。Awesome Privacy作为隐私保护软件和服务的精选列表,其代码库的可靠性至关重要。本文将从数据验证、API设计、组件复用和搜索优化四个维度,探讨…

MATLAB实现机会约束规划的样本平均近似与约束优化求解

MATLAB实现机会约束规划的样本平均近似与约束优化求解

2026/9/3 9:56:48

简介:本资源是一套面向计算机、电子信息工程及数学等专业本科生的Matlab实践代码,聚焦于机会约束优化问题的数值求解,特别适用于课程设计、期末大作业与毕业设计等中阶实践场景。代码基于样本平均近似(SAA)方法&#x…

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

2026/9/2 10:08:07

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

2026/9/2 12:11:52

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

2026/9/1 23:49:08

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

【原创】基于微信小程序+AI大模型+uni-app的宠物用品商城小程序(设计与实现)

【原创】基于微信小程序+AI大模型+uni-app的宠物用品商城小程序(设计与实现)

2026/9/3 0:06:18

摘要:随着电子商务与本地生活服务的普及,线上交易与店铺运营管理已成为常规业态。传统分散式进销存与人工对账方式存在流程割裂、库存难同步、促销规则难落地、经营数据难沉淀等弊端,难以支撑一体化的数字化运营。同类课题亦多见多商户在线商…

【原创】基于AI大模型+SpringBoot+Vue的宠物用品商城(设计与实现)

【原创】基于AI大模型+SpringBoot+Vue的宠物用品商城(设计与实现)

2026/9/3 0:06:18

摘要:随着电子商务与本地生活服务的普及,线上交易与店铺运营管理已成为常规业态。传统分散式进销存与人工对账方式存在流程割裂、库存难同步、促销规则难落地、经营数据难沉淀等弊端,难以支撑一体化的数字化运营。同类课题亦多见多商户在线商…

【原创】基于微信小程序+AI大模型+uni-app的节日礼品定制商城小程序(设计与实现)

【原创】基于微信小程序+AI大模型+uni-app的节日礼品定制商城小程序(设计与实现)

2026/9/3 0:06:18

摘要:随着电子商务与本地生活服务的普及,线上交易与店铺运营管理已成为常规业态。传统分散式进销存与人工对账方式存在流程割裂、库存难同步、促销规则难落地、经营数据难沉淀等弊端,难以支撑一体化的数字化运营。同类课题亦多见多商户在线商…

远程协作的工作台整理

远程协作的工作台整理

2026/9/3 6:56:24

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/3 6:39:45

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/3 5:20:28

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…