我正在阅读apache启动脚本,试图对服务器的某些问题进行故障排除,但是一开始我确实不太了解参数扩展。
SCRIPTNAME="${0##*/}"
SCRIPTNAME="${SCRIPTNAME##[KS][0-9][0-9]}"
if [ -n "$APACHE_CONFDIR" ] ; then
if [ "${APACHE_CONFDIR##/etc/apache2-}" != "${APACHE_CONFDIR}" ] ; then
DIR_SUFFIX="${APACHE_CONFDIR##/etc/apache2-}"
else
DIR_SUFFIX=
fi
elif [ "${SCRIPTNAME##apache2-}" != "$SCRIPTNAME" ] ; then
DIR_SUFFIX="-${SCRIPTNAME##apache2-}"
APACHE_CONFDIR=/etc/apache2$DIR_SUFFIX
else
DIR_SUFFIX=
APACHE_CONFDIR=/etc/apache2
fi
我只是想对$ {parameter ## word}构造的作用做些澄清,因为我不清楚gnu的bash参考手册。手册是这样定义的...
$ {parameter#word} $ {parameter ## word}
单词被扩展以产生与文件名扩展相同的模式(请参见文件名扩展)。如果模式与参数的扩展值的开头匹配,则扩展的结果是具有最短匹配模式(“#”情况)或最长匹配模式(“ ##”情况)的参数扩展值已删除。如果参数为'@'或'*',则将模式去除操作依次应用于每个位置参数,并且扩展为结果列表。如果parameter是下标为'@'或'*'的数组变量,则将模式删除操作依次应用于数组的每个成员,并且扩展为结果列表。
这是否意味着第一行将一个空字符串存储回了SCRIPTNAME
我的位置?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句