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!。

posted @   thammer  阅读(46)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示