我有这个配置文件(在.CFG结尾的纯文本文件)如何读取和打印生成文件目标中的文件内容(某些设置)?
# The application name
learningErlangTesting
# The node name
mysql_testing
另外,我有这个Makefile:
ok:
APP=$(shell cat nodes.cfg | sed -n '2p')
NODE=$(shell cat nodes.cfg | sed -n '5p')
echo $(APP)
echo $(NODE)
当我运行make好,我得到
APP=learningErlangTesting
NODE=mysql_testing
echo
echo
我的变量似乎是空的,我无法打印它们,也没有使用它们来建立一个文件夹路径(我打算这样做后,我会得到我的手)。
我在做什么错?
非常感谢, 德斯蒙德
取消+1,因为'cat ... | sed ...'是一个讽刺。修复OP的文体错误并忽略UUOC! – 2014-11-22 15:21:44
我试过第二个版本,它的工作原理...你能解释一下:什么是$$(...)。我知道$(...)在子shell中执行某些内容,但不知道$$(...)。还需要在目标以外的make中声明变量吗?非常感谢,Desmond – adragomir 2014-11-22 19:41:26
您需要阅读有关makefile语法。 Makefile不是shell脚本,makefile语法不是shell语法。 makefile中的'$(...)'并不是指在子外壳中执行的东西,它指的是一个变量引用。关于makefile的令人困惑的事情是,它们包含_contain_ shell脚本:规则的配方是shell脚本并使用shell语法。为了避免美元符号传递到shell而不是由make解释,你将它加倍,所以'$$'扩展为一个'$',它可以传递给shell。 http://www.gnu.org/software/make/manual/html_node/Introduction。html – MadScientist 2014-11-22 20:44:59