我有一个简单的makefile可以打印git log,如下所示。
SHELL=/bin/bash get_log: echo $(git log)
然而,当我运行make get_log没有返回任何东西,虽然如果我运行git log直接在CMD我得到的结果.更新:文件格式正确,我使用空格而不是制表符在这里张贴问题。2你知道这里可能有什么问题吗?3提前感谢。
make get_log
git log
dly7yett1#
错误发生在makefile格式上,根据设计,您必须使用制表符缩进,因此您必须在echo $(git log)之前加上tab indentation。
echo $(git log)
tab indentation
yhxst69z2#
这条线
有两个缺点它使用了一个$命令make查找变量git的内容,但其中包含一个错误的空格和log作为加法。我不认为make会在这种格式错误的访问下找到任何内容,这意味着它会悄悄地将表达式替换为... nothing。其次,你不需要echo,因为git log写的是stdout,所以正确的形式应该是:
$
git
log
make
echo
stdout
get_log: git log
如果这是非常有用的是另一个问题。我更喜欢在脚本中分离关注点-只要你不能增加任何好处,如从部署分支或sg.similar获取日志,我会远离摆弄git。用户必须学习它的基础,如log无论如何。PS:我建议你阅读https://www.gnu.org/software/make/manual/的手册,因为你甚至缺乏对make最基本的理解(无意冒犯),它会在这一点上(缺乏)知识一次又一次地挫败你。
2条答案
按热度按时间dly7yett1#
错误发生在makefile格式上,根据设计,您必须使用制表符缩进,因此您必须在
echo $(git log)
之前加上tab indentation
。yhxst69z2#
这条线
有两个缺点它使用了一个
$
命令make查找变量git
的内容,但其中包含一个错误的空格和log
作为加法。我不认为make
会在这种格式错误的访问下找到任何内容,这意味着它会悄悄地将表达式替换为... nothing。其次,你不需要echo
,因为git log
写的是stdout
,所以正确的形式应该是:如果这是非常有用的是另一个问题。我更喜欢在脚本中分离关注点-只要你不能增加任何好处,如从部署分支或sg.similar获取日志,我会远离摆弄
git
。用户必须学习它的基础,如log
无论如何。PS:我建议你阅读https://www.gnu.org/software/make/manual/的手册,因为你甚至缺乏对
make
最基本的理解(无意冒犯),它会在这一点上(缺乏)知识一次又一次地挫败你。