原帖:http://kaya2007.itpub.net/post/27409/251058
例子:经常在 configure 脚本中,会出现以下类似的语句,都表示什么意思呢?
if test -n "${ZSH_VERSION+set}"; then ac_env_build_alias_set=${build_alias+set} test "${ac_configure_args0+set}" != set |
答案及扩展:
变量赋值方式 |
str 没有赋值 |
str 为空字符串 |
str 为非空字符串 |
备注 |
var=${str-expr} |
var=expr |
var=$str |
对var 进行设置 | |
var=${str+expr} |
var=$str |
var=expr |
对var 进行设置,var 与str 要不都取值,要不都不取值。虽然取值不同 | |
var=${str=expr} |
str=expr |
str
不变 |
对var 与str 进行设置, var 与str 保持一致 | |
var=${str?expr} |
expr 输出至 stderr |
var=str |
对var 进行设置 | |
var=${str:-expr} |
var=expr |
var=$str | ||
var=${str:+expr} |
var= |
var=expr | ||
var=${str:=expr} |
str=expr |
str
不变 | ||
var=${str:?expr} |
expr 输出至 stderr |
var=str |