问题的小解释
最近在修改一个shell脚本时发现了一个小问题, 使用makefile调用python脚本时, 在给python传递参数中我用双引号包裹了变量名, 目的是为了防止变量名中含有空格会让参数产生错误,具体的表现形式大概如下:
shell python3 test.py --version "$(VERSION)" --date "$(DATE)" --output "$(OUTPUT)"
在实际使用中发现真的有错, 而且是我加了双引号导致的,于是具体看了一下shell和makefile中string变量的区别,因为之前我一直以为makefile就是完完全全使用的shell的语法,两者完全一致。
shell
NAME=“Pirlo”
通过echo打印输出${NAME}, 会显示Pirlo
makefile
NAME=“Pirlo”
通过warning打印输出$(NAME), 会显示"Pirlo", 也就是说在makefile中定义的string变量已经自带了双引号, 如果再加上一个多余的双引号, 可能会让传递参数产生错误。
希望各位注意。