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

Bash中是否有类似Python的简洁默认值赋值语法?

Bash里更简洁的默认值设置方案

当然有!Bash提供了专门的参数展开语法,能让你用一行代码搞定默认值赋值,比你现在的if判断简洁太多,完全能达到类似Python里myvar = myvar or "default"的效果。

针对位置参数的快捷写法

你例子里用的是命令行位置参数$1,这种场景最适合用${parameter:-word}语法:

myvar=${1:-default}

这句代码的逻辑是:如果$1为空(或者未被设置),就把default赋值给myvar;如果$1有有效值,就直接用$1的值。完美替代你原来的三行if判断。

另外还有个类似的${parameter-word},区别是它只会在parameter完全未设置的时候才用默认值——如果$1是空字符串(比如用户输入了空参数),它会保留空值而不是替换成默认。这个看你的具体需求选择。

普通变量的默认值设置

如果是针对普通变量(类似Python里的场景),同样用这套参数展开语法:

myvar=${myvar:-default}

这句和Python的myvar = myvar or "default"逻辑完全一致:只要myvar是空值(或者未定义),就替换成default,否则保持原变量的值。

举个对比例子

原来的写法:

myvar=$1
if [ -z "$myvar" ]; then
    myvar=default
fi

替换成简洁版后,一行就搞定:

myvar=${1:-default}

甚至如果不需要赋值给变量,直接要输出默认值的话,还能直接这么用:

echo "当前值:${myvar:-default}"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:27:58