标签

, ,

在调上一篇日志中加号问题时,看到内核scripts/setlocalversion有如下代码段:
if test “${LOCALVERSION+set}” != “set”; then
scm=$(scm_version –short)
res=”$res${scm:++}”
fi
其中的${LOCALVERSION+set}和$res${scm:++}愣是没看懂,终于在ABS9.3节找到了答案:
${parameter+alt_value}, ${parameter:+alt_value}
If parameter set, use alt_value, else use null string.
也就是说,这时BASH为变量赋值的一种方式而已,类似的还有:
${parameter-default}, ${parameter:-default}
If parameter not set, use default.
${parameter=default}, ${parameter:=default}
If parameter not set, set it to default.
${parameter?err_msg}, ${parameter:?err_msg}
If parameter set, use it, else print err_msg.
此外也可以参考http://wiki.bash-hackers.org/syntax/pe#use_a_default_valuearrays

Advertisements