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)
- 原值没设置赋值 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) |