2010-12-03 233 views
1

我有我的shell腳本以下行:的Bash shell腳本變量

如果[-n 「$ {USE_X:+1}」];然後

我無法弄清楚「:+1」部分的含義。有任何想法嗎?

回答

5

看一看here。該網址提供了以下解釋:

$ {參數:+ 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 
4

基本上如果$ 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. 
2

因爲aioobe已經回答了這個問題本身,這裏有一個方法來搜索長期聯機幫助像bash的使用正則表達式,利用這個問題作爲一個例子:


/\{.*:\+ 

第一正斜槓提出less(手冊頁瀏覽器)進入搜索模式;正則表達式表示要搜索左括號,然後搜索任意數量的東西,然後搜索冒號,然後加上一個加號。括號和加號需要轉義,因爲它們對正則表達式解析器有特殊的含義。