当前位置: > shell编程 >

shell中变量赋值的几种方式 + - = ?

时间:2014-06-23 02:43来源:linux.it.net.cn 作者:IT网
- 原值没设置赋值
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 没有定义时发出警告信息的,没赋值功能。

(责任编辑:IT)
------分隔线----------------------------
栏目列表
推荐内容