linux shell中变量默认值语法核心为${var:-default}(仅临时取默认值,不修改变量)和${var:=default}(首次访问即初始化并赋值),另含${var:+word}(非空才返回)与${var:?msg}(为空则报错退出)。

Linux Shell 中给变量“赋能”默认值,核心是用 ${var:-default} 和 ${var:=default} 这两种语法。它们不是赋值语句,而是**变量扩展时的条件取值机制**,在引用变量的瞬间决定用原值还是 fallback 值。
用 ${var:-default} 提供临时默认值
这个语法只在展开时返回默认值,**不改变变量本身**。适合读取配置、传参、容错输出等场景。
- 当
var未定义或为空字符串("")时,整个表达式取default - 当
var已定义且非空时,取var的当前值 - 可用于位置参数:比如函数里写
local msg=${1:-"no message"},安全获取第一个参数
用 ${var:=default} 赋值并回填变量
这个语法不仅返回默认值,还会**把 default 写入变量 var**,实现“首次访问即初始化”的效果。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 变量未定义 → 返回 default,同时设
var=default - 变量为空字符串 → 同样返回 default,并把
var设为default - 变量已有非空值 → 不做任何改动,返回原值
- 注意:
:=不能用于位置参数(如${1:=x}在 bash 中报错)
其他常用变体补充
除了最常用的两种,还有两个高频辅助语法:
-
${var:+word}:变量存在且非空时才返回word,否则返回空;常用于条件拼接,比如curl -v${debug:+ --verbose} -
${var:?message}:变量为空或未定义时,打印message并退出脚本;适合强制校验必要参数
实际使用小提醒
写法上注意三点:
- 冒号
:必须紧贴连字符或等号,不能写成${var: -default}(有空格就失效) - 推荐统一用花括号
${...},避免和后续字符粘连,比如${count}th而不是$countth - 默认值本身可以是变量、命令替换甚至嵌套扩展,例如
${HOME:-$(getent passwd $USER | cut -d: -f6)}










