讲师中心 微信公众号

工具推荐

视频效率加速
updream

一键生成高质量推广成片

立刻MV
立刻MV

低成本歌曲 MV、视频生成

AniShort
AniShort

AI短剧协同制作平台

Seko
Seko

AI短剧一键生成成片

Shell基础怎么通过逻辑与或符实现命令的条件短路执行

雨芳酱_9505

雨芳酱_9505

发布时间:2026-07-27 10:18:22

|

799人浏览过

|

来源于php中文网

原创

Shell中&&和||基于命令退出码实现短路执行:&&在前命令成功(0)时执行后命令,||在前命令失败(非0)时执行后命令;二者均只依赖紧邻左侧命令状态,不累积结果。

shell基础怎么通过逻辑与或符实现命令的条件短路执行

Shell 中用 && 和 || 实现命令的条件短路执行,核心在于利用命令的退出状态($?):成功为 0,失败为非 0。这两个符号不判断“真假值”本身,而是依据上一条命令是否成功来决定是否执行下一条。

理解短路机制的关键逻辑

Shell 的短路不是靠布尔表达式求值,而是靠命令执行后的退出码跳转:

  • && 是“成功才继续”:前一个命令返回 0(成功),后续命令才运行;一旦某条失败(非 0),后面全部跳过
  • || 是“失败才继续”:前一个命令返回非 0(失败),后续命令才运行;一旦某条成功(0),后面全部跳过
  • 它们都只看紧邻左侧命令的退出状态,不累积或合并多个结果
  • 这种行为和 C/Python 中的 &&、|| 一致,属于“短路求值”

常用 && 组合:串联依赖型操作

适合需要按顺序完成、且每步都必须成功的场景,比如部署、清理、安装流程:

  • mkdir -p /data/logs && touch /data/logs/app.log && chown app:app /data/logs/app.log 只有目录创建成功,才建日志文件;只有文件创建成功,才改属主。任一失败,后续不执行
  • cp config.conf /etc/myapp/ && systemctl reload myapp && echo "Config updated" 配置复制失败时,不会误重启服务;重载成功后才打印提示
  • 注意:&& 不能直接用于 if 条件内部的复合测试(如 [ -f a ] && [ -r a ] 必须写成两个独立测试,或用 [[ ]] 语法)

常用 || 组合:提供 fallback 或错误处理

适合容错、兜底、或二选一的场景,比如检查存在性、降级执行、报错提示:

  • ls /var/log/nginx/access.log || echo "Nginx log not found" 日志不存在时输出提示,存在则静默(不执行右边)
  • command -v jq >/dev/null || { echo "jq missing, installing..."; apt-get install -y jq; } 检测工具缺失时才安装,存在则跳过整个块
  • ping -c1 google.com &>/dev/null || echo "Network unreachable" | logger -t netcheck 网络不通时记录日志,通则无动作

组合使用 && 和 || 实现三态逻辑

类似“if-else”,但更轻量,常用于单行判断:

  • mkdir /tmp/test && echo "OK" || echo "Failed" 注意:这并非严格等价于 if-else —— 如果 mkdir 成功但 echo "OK" 因某种原因失败(极少见),也会触发 echo "Failed"。更稳妥写法是:if mkdir /tmp/test; then echo "OK"; else echo "Failed"; fi
  • 真正安全的单行替代:mkdir /tmp/test && { echo "OK"; } || { echo "Failed"; } 用花括号把成功/失败分支各自包成一个命令组,避免中间命令干扰逻辑
  • 常见模式:command || { cleanup; exit 1; } —— 失败时统一清理并退出

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

函子Zion

一款支持AI搭建、可视化编辑和多端发布的全栈无代码开发平台。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

讯飞智文

一款面向学习和办公场景的AI文档创作工具,可辅助生成PPT与Word文档,提高资料整理和内容制作效率。

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

4530

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

3793

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

3093

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

7690

2023.07.05

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

7322

2023.07.06

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

4153

2023.07.20

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

3645

2023.07.20

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

3899

2023.07.25

Go-Zero零基础入门教程
Go-Zero零基础入门教程

本专题整理Go-Zero的入门知识,从框架定位、环境准备到跑通第一个API服务,讲清目录分层、配置加载、日志与中间件的基本用法,并对比Gin、Kratos的差异,帮助Go开发者建立整体认知,判断它是否适合当前项目。

0

2026.11.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
尚观shell视频教程
尚观shell视频教程

共8课时 | 1.9万人学习

Linux开发视频教程
Linux开发视频教程

共18课时 | 4.7万人学习

Perl 入门教程
Perl 入门教程

共29课时 | 31.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn