生成文件
a:
echo "123" > afile
cat afile
# expect output 123, but it's empty
echo $(shell cat afile)
为什么echo什么都不输出?
在make中,在调用配方中的第一个命令之前,将展开整个配方(配方中的所有命令(。
由于$(shell ...)
是一个make函数,而不是shell函数,make将在开始运行配方中的任何命令之前对其进行扩展。
您可以将其更改为$$(cat afile)
并使其成为shell操作,并且make不会运行cat
。
谢谢大家$(shell…(在执行配方之前展开。说得通。查看以下代码
a:
ln -s hello.txt qq
cat qq
echo $(shell cat qq)
a1: a
cat qq
echo $(shell cat qq)
制作a1。
为什么a1可以正确地回显字符串?hello.txt包含hello。
在谷歌之后,找到答案。就像MadScientist所说的避免$(shell…(。
a:
echo "123" > afile
cat afile
echo `cat afile`
a:
echo "123" > afile
cat afile
echo $$(cat afile)