在我的makefile中,我需要检查一个文件是否以bash shebang开头。
我通过这样做得到了这个值
PROJECT_AUTOINSTALL_FIRST_LINE := $$(head -n 1 ./autoinstall_script.sh)然后我将它与这个值进行比较:
BASH_SHEBANG = \#!/bin/bash然后,我检查它们是否相等,方法是
ifneq ($(PROJECT_AUTOINSTALL_FIRST_LINE),$(BASH_SHEBANG))
@${ERROR_ECHO} "The FIRST line in project autoinstall file MUST be $(BASH_SHEBANG)."
endif问题是,无论文件是否以shebang开头,条件始终为真。我做了一个调试回声,以便以可视化的方式测试相等性,并得到以下结果:

乍一看,它们似乎是相等的,但代码并不是这样说的。你知道我做错了什么吗?
谢谢。
发布于 2020-01-17 18:56:15
什么
PROJECT_AUTOINSTALL_FIRST_LINE := $$(head -n 1 ./autoinstall_script.sh)只需将文字字符串$(head -n 1 ./autoinstall_script.sh)赋给变量PROJECT_AUTOINSTALL_FIRST_LINE即可。不是你想要的。请尝试执行以下操作:
PROJECT_AUTOINSTALL_FIRST_LINE := $(shell head -n 1 ./autoinstall_script.sh)https://stackoverflow.com/questions/59785619
复制相似问题