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

发布时间:2026/7/11 6:02:23

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/7/11 6:02:23

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

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

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

2026/7/11 5:52:23

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

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

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

2026/7/11 5:52:23

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

AdBlock vs AdGuard vs uBlock Origin:3 款主流广告拦截插件 2024 年横评

AdBlock vs AdGuard vs uBlock Origin:3 款主流广告拦截插件 2024 年横评

2026/7/11 7:42:28

2024年三大广告拦截插件终极对决:AdBlock vs AdGuard vs uBlock Origin每次打开浏览器,那些弹窗、横幅和自动播放的视频广告是不是让你烦躁不已?在信息过载的时代,一个高效的广告拦截工具已经成为现代网民的数字生存必需品。但面对…

合同管理出了问题,企业通常先感觉到这五件事

合同管理出了问题,企业通常先感觉到这五件事

2026/7/11 7:42:28

企业很少在某一天突然意识到"合同管理出了问题"。更常见的情况是:某次审计发现留痕不完整,某份到期合同没人知道,某次纠纷时拿不出可信的版本——问题早已存在,只是以一件具体事情的面目出现。 以下五件事,…

实战构建企业安全漏洞知识库:从多源告警到自动化处置的架构与实现

实战构建企业安全漏洞知识库:从多源告警到自动化处置的架构与实现

2026/7/11 7:42:28

1. 项目概述:为什么我们需要一个“活的”漏洞知识库? 在安全运营的日常里,最让人头疼的往往不是发现漏洞,而是处理漏洞。想象一下这个场景:你的邮箱里塞满了来自不同渠道的漏洞告警——有商业扫描器的PDF报告、有开源工…

生物信息学自学指南:3步掌握DNA分析与基因编辑核心技术

生物信息学自学指南:3步掌握DNA分析与基因编辑核心技术

2026/7/11 7:42:28

生物信息学自学指南:3步掌握DNA分析与基因编辑核心技术 【免费下载链接】cs-self-learning 计算机自学指南 项目地址: https://gitcode.com/GitHub_Trending/cs/cs-self-learning 生物信息学正在改变生命科学研究的范式,成为连接生物学与计算机科…

可移植Agent实战:从Hermes改造到飞书/Git/Harness深度集成

可移植Agent实战:从Hermes改造到飞书/Git/Harness深度集成

2026/7/11 7:42:28

1. 项目概述:一个能干活、能移植的 Agent 到底长什么样?“如何搭建一个能干活,能移植的 Agent”——这句话不是技术口号,而是过去两年我亲手踩过二十多个坑、重装过七次服务器、在三个不同客户现场反复推倒重来后,写在…

参数权重失控?风格崩坏?——Midjourney提示词精准控制全链路拆解,含37组AB测试对比数据

参数权重失控?风格崩坏?——Midjourney提示词精准控制全链路拆解,含37组AB测试对比数据

2026/7/11 7:32:27

更多请点击: https://kaifayun.com 第一章:参数权重失控?风格崩坏?——Midjourney提示词精准控制全链路拆解,含37组AB测试对比数据 Midjourney的提示词解析机制并非线性加权,而是基于CLIP文本编码器与扩散…

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南

2026/7/10 22:32:48

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gi…

6个月转型AI工程师:实战路径与核心技能

6个月转型AI工程师:实战路径与核心技能

2026/7/9 18:28:30

1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公…

YOLOv5模型剪枝与量化实战:边缘设备部署优化

YOLOv5模型剪枝与量化实战:边缘设备部署优化

2026/7/10 6:57:56

1. 项目背景与核心价值在计算机视觉领域,YOLOv5因其出色的实时检测性能成为工业界宠儿。但当我们尝试将其部署到边缘设备(如树莓派、Jetson Nano或手机终端)时,立刻会遇到两个致命问题:模型体积庞大(原始YO…

WechatDecrypt技术解析:深入理解微信数据库AES-256-CBC解密机制

WechatDecrypt技术解析:深入理解微信数据库AES-256-CBC解密机制

2026/7/11 0:02:03

WechatDecrypt技术解析:深入理解微信数据库AES-256-CBC解密机制 【免费下载链接】WechatDecrypt 微信消息解密工具 项目地址: https://gitcode.com/gh_mirrors/we/WechatDecrypt 在数字隐私日益重要的今天,微信聊天记录作为个人数字资产的重要组成…

5分钟搞定Kodi字幕难题:智能字幕插件让你追剧无忧 [特殊字符]

5分钟搞定Kodi字幕难题:智能字幕插件让你追剧无忧 [特殊字符]

2026/7/11 0:02:03

5分钟搞定Kodi字幕难题:智能字幕插件让你追剧无忧 🎬 【免费下载链接】zimuku_for_kodi Kodi 插件,用于从「字幕库」网站下载字幕 项目地址: https://gitcode.com/gh_mirrors/zi/zimuku_for_kodi 还记得那个深夜吗?你刚下载…

PostgreSQL 备份与恢复实战:从 pg_dump 到时间点恢复的生产级方案

PostgreSQL 备份与恢复实战:从 pg_dump 到时间点恢复的生产级方案

2026/7/11 0:02:03

PostgreSQL 备份与恢复实战:从 pg_dump 到时间点恢复的生产级方案 一、数据库备份最容易被忽略的问题,不是「有没有做备份」,而是「备份能不能恢复、恢复要多久、以及恢复后的数据对不对」 很多团队做数据库备份的方式是「写个 cron job&am…