2015-05-20 166 views
0

它是makefile中代碼的一部分,有兩個$$來擴展變量CONTINUE,爲什麼?有什麼特別的意義嗎?Makefile中的變量擴展

read -r -p "Overwrite your existing default nginx configuration? [y/N] " CONTINUE; 
    if [ "$$CONTINUE" == "y" ] || [ "$$CONTINUE" == "Y" ]; then 
     echo "y" 
    else 
     echo "n" 
    fi 
+3

我猜你真的找到了這一個Makefile,其中'$ var'將擴大** **作命名變量var和$$ var'將擴大** shell **變量名爲var。除此之外,它已被破壞。 – geirha

+0

是的,它用在makefile中,但是我怎麼不明白你@geirha – storen

+0

然後不要聲稱它是在bash腳本中。 – geirha

回答

1

$$是(簡單地說)在Makefile中轉義,因爲$ -Vars在那裏也存在。 要使用bash的變量(這也需要$ VAR)你必須寫$$

預編輯

,此腳本甚至工作(從「腳本」到「Makefile文件」主題的變化)?

# ./test.sh 
Overwrite your existing default nginx configuration? [y/N] y 
n 

將其更改爲單個$。

$$擴展到執行的bash的PID殼

($$)擴展爲殼的進程ID。在()子shell中,它擴展爲調用shell的進程ID,而不是子shell。

Bash ref