例子:经常在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 |