bash变量冒号扩展
参考自网道
Bash 提供四个特殊语法,跟变量的默认值有关,目的是保证变量不为空。
- 如果变量为空则返回默认值,否则返回变量本来的值
${varname:-defaultval}
上面语法的含义是,如果变量varname
存在且不为空,则返回它的值,否则返回defaultval
。它的目的是返回一个默认值,比如${count:-0}表示变量count不存在时返回0。
类似的写法是:
if [ -n "$varname" ]; then echo $varname else echo "defaultval" fi
- 如果变量为空则返回并设置默认值,否则返回变量原来的值
${varname:=defaultval}
上面语法的含义是,如果变量varname
存在且不为空,则返回它的值,否则返回defaultval
,并且将它设为defaultval
。它的目的是设置变量的默认值,比如${count:=0}表示变量count不存在时返回0,且将count设为0。和上面那条扩展不同是,会给变量varname
做赋值操作。
类似写法是:
if [ -n "$varname" ]; then echo $varname else varname="defaultval" echo "defaultval" fi
- 如果变量非空返回指定的值,否则返回空
${varname:+word}
上面语法的含义是,如果变量名存在且不为空,则返回word
,否则返回空值。它的目的是测试变量是否存在,比如${count:+1}表示变量count存在时返回1(表示true),否则返回空值。
类似的写法是:
if [ -z "$varname" ]; then echo $varname else echo "defaultval" fi
- 变量为空则打印指定信息,并退出脚本执行
${varname:?message}
上面语法的含义是,如果变量varname
存在且不为空,则返回它的值,否则打印出varname: message
,并中断脚本的执行。如果省略了message,则输出默认的信息“parameter null or not set.”。它的目的是防止变量未定义,比如${count:?"undefined!"}表示变量count未定义时就中断执行,抛出错误,返回给定的报错信息undefined!。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通