2015-05-20 128 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