You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shell脚本变量赋值时||运算符的作用及执行逻辑是什么?

Shell 脚本中||运算符在赋值场景下的工作原理

Shell 中的||是短路逻辑或运算符,核心执行规则为:仅当||左侧的命令/语句执行后退出码不为0(Shell 约定退出码0代表执行成功,非0代表执行失败)时,才会执行||右侧的语句,否则右侧语句会被直接跳过不执行。

目标代码行运行逻辑拆解

你标注的代码行:

output=`ufw_start` || error="$?"

运行时按以下顺序处理:

  1. 首先执行ufw_start函数,将函数运行时输出到标准输出的所有内容赋值给output变量,同时记录ufw_start执行结束后的退出码
  2. 判断上一步获取的退出码:
    • 若退出码为0(ufw_start执行成功):||右侧的error="$?"语句直接被跳过,不会执行,此时error变量保留执行这行代码之前的取值,若此前未定义过error,则值为空
    • 若退出码非0(ufw_start执行失败):才会执行右侧的赋值操作,$?取的就是刚才ufw_start返回的非0退出码,赋值给error变量

补充说明

你贴出的完整代码存在逻辑漏洞:如果ufw_start执行成功,error不会被赋值为0,后续的if [ "$error" = "0" ]判断会因为error为空而不符合条件,不会执行内核变量设置的逻辑。正确的写法可以直接判断命令退出码,或者将error赋值操作放在||之外。

常见使用场景

||常被用于做错误兜底处理,示例:

# 若创建目录失败,直接打印错误并退出脚本
mkdir /data/custom || { echo "创建目录失败"; exit 1; }

内容的提问来源于stack exchange,提问作者rgo1991

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 23:06:02