linux 脚本 变量 赋值,shell中变量赋值的几种方式 + - = ?

- 原值没设置赋值

var=${str-expr}

str 没有设值

unset str  var=${str-abc}

echo ${var}  ${str}

abc     空值

str 设值

str=old_value   var=${str-new_value}

echo ${var}      ${str}

old_value   old_value

str 设值为 空字符串 ""

str=""    var=${str-newValue}

echo ${var}  ${str}

空字符串    空字符串

var=${str:-expr}

str 没有设值

unset str var=${str:-abc}

echo ${var} ${str}

abc  空值

str 设值

str=old_value; var=${str:-new_value}

echo ${var}  ${str}

old_value  old_value

str 设值为空串

str=""; var=${str:-new_value}

echo ${var} ${str}

new_value  ""

总结:  str 的值始终不会改变。

var 的值  str值存在则使用自己,否则使用赋给的值

带上 : 表示加一个条件, 原值必须有效

________________________________________________________

+ 原值设值了,就赋值

var=${str+expr}

不设值

unset str; var=${str+new};

echo ${var} ${str}

空值   空值

设非空值

str=old; var=${str+new}

echo ${var} ${str}

new    old

设空值

str=""; var=${str+new};

echo ${var} ${str};

new    空串

推断   var=${str:+expr};

不设值

unset str; var=${str:+new};

echo ${var} ${str}

空值   空值

设非空值

str=old; var=${str:+new}

echo ${var} ${str}

new    old

设空值

str=""; var=${str:+new};

echo ${var} ${str};

空串    空串

—————————————————————————————————————————————————————————————

= 和 - 类似 没设置值时,才用新值; 但= 会同时修改str 变量的值

var=${str=expr}

不设值

unset str; var=${str=new};

echo ${var} ${str}

new   new

设非空值

str=old; var=${str=new}

echo ${var} ${str}

old    old

设空值

str=""; var=${str=new};

echo ${var} ${str};

空串   空串

:

不设值

unset str; var=${str:=new};

echo ${var} ${str}

new   new

设非空值

str=old; var=${str:=new}

echo ${var} ${str}

old    old

设空值

str=""; var=${str:=new};

echo ${var} ${str};

new   new

_____________________________________________

?

没设置

unset str; var=${str?"is unvalid"};

-bash: str: is unvalid

echo ${var} ${str};

null  null

设非空值

str=old; var=${str?new_value};

echo ${str} ${var}

old    old

设空串

str=""; var=${str?new};

echo ${str} ${var}

空串   空串

其实这个? 主要是用来 当str 没有定义时发出警告信息的,没赋值功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值