【发布时间】:2010-12-03 06:40:38
【问题描述】:
我的 shell 脚本中有以下行:
如果 [ -n "${USE_X:+1}" ];那么
我不知道“:+1”部分是什么意思。有什么想法吗?
【问题讨论】:
标签: bash shell scripting variables
我的 shell 脚本中有以下行:
如果 [ -n "${USE_X:+1}" ];那么
我不知道“:+1”部分是什么意思。有什么想法吗?
【问题讨论】:
标签: bash shell scripting variables
看看here。该网址提供了以下解释:
${parameter:+alt_value}
如果设置了参数,则使用 alt_value,否则使用空字符串。
并有以下示例:
echo
echo "###### \${parameter:+alt_value} ########"
echo
a=${param4:+xyz}
echo "a = $a" # a =
param5=
a=${param5:+xyz}
echo "a = $a" # a =
# Different result from a=${param5+xyz}
param6=123
a=${param6:+xyz}
echo "a = $a" # a = xyz
【讨论】:
基本上,如果设置了 $USE_X,则语句被评估为 1,否则为 null。可能类似于
if [ -z $USE_X ];
then
echo 1
else
echo ""
fi
来自http://tldp.org/LDP/abs/html/parameter-substitution.html#PATTMATCHING:
${parameter+alt_value}, ${parameter:+alt_value}
If parameter set, use alt_value, else use null string.
Both forms nearly equivalent. The : makes a difference only when parameter has been declared and is null, see below.
【讨论】:
因为 aioobe 已经回答了这个问题本身,所以这里有一种方法可以使用正则表达式来搜索像 Bash 这样的长联机帮助页,以这个问题为例:
/\{.*:\+
第一个正斜杠将less(手册页查看器)置于搜索模式;正则表达式说要搜索左括号,然后是任意数量的东西,然后是冒号,后跟加号。括号和加号需要转义,因为它们对正则表达式解析器具有特殊含义。
【讨论】: