当前位置: 技术问答>linux和unix
为何makefile中执行的结果和直接在命令行中执行结果不一致?
来源: 互联网 发布时间:2016-09-30
本文导语: # makefile 文件内容: test: currentdir=`pwd`; echo ${currentdir}; pwd ; dir2=${currentdir%/*}; echo ${dir2}; 然后执行make显示如下: zyd@HCC:~/projects/make> make test currentdir=`pwd`; echo ; pwd ; dir2=; echo ; /home/zyd/projects/make zyd@HC...
# makefile 文件内容:
test:
currentdir=`pwd`; echo ${currentdir}; pwd ; dir2=${currentdir%/*}; echo ${dir2};
然后执行make显示如下:
zyd@HCC:~/projects/make> make test
currentdir=`pwd`; echo ; pwd ; dir2=; echo ;
/home/zyd/projects/make
zyd@HCC:~/projects/make>
明明这里的`pwd`不是为空,为什么 echo ${currentdir}; 就成了 echo ;了呢?
|
关键是makefile中的$需要转义,使用$$
test:
currentdir=`pwd`; echo $${currentdir}; pwd ; dir2=$${currentdir%/*}; echo $${dir2};
test:
currentdir=`pwd`; echo $${currentdir}; pwd ; dir2=$${currentdir%/*}; echo $${dir2};
|
“明明这里的`pwd`不是为空,为什么 echo ${currentdir}; 就成了 echo ;了呢?”
在显示第一行的时候,只是将要执行的命令显示出来但并没有执行,此时currentdir还没有被赋值,所以它是空的,输出就成了"echo"。
在显示第一行的时候,只是将要执行的命令显示出来但并没有执行,此时currentdir还没有被赋值,所以它是空的,输出就成了"echo"。