Bash 将文件中的值读入变量

Bash 将文件中的值读入变量,bash,makefile,Bash,Makefile,我在Windows中使用make,我想从一个文件中读取几个值作为make文件中的变量 我有一个包含以下行的文件: /* A comment */ #define SOME_STRING "ABCDE" /* A comment " " */ #define BLANK_STRING " " /* A comment */ #define SOME_VERSION 01.01a01 我希望在我的makefile中有两个变量。一个设置为ABCDE,另一个设置为0

我在Windows中使用make,我想从一个文件中读取几个值作为make文件中的变量

我有一个包含以下行的文件:

/* A comment */
#define SOME_STRING "ABCDE"

/* A comment         "     " */
#define BLANK_STRING "     "

/* A comment */
#define SOME_VERSION 01.01a01
我希望在我的makefile中有两个变量。一个设置为ABCDE,另一个设置为01.01a01

这也可以通过在makefile中调用一些bash命令来实现。我是makefiles、bash和stackoverflow的新手,所以请容忍我

谢谢


斯蒂芬

谢谢,这真的很好用。我必须更改为
-包含导入
,否则我会收到错误:导入:没有这样的文件或目录。即使有错误,导入也能正常工作,因此错误抑制似乎是我可以接受的解决方案。我决定使用它作为我的解决方案,因为它将处理对
输入文件的更改。这是因为它使用了#define的名称。我的定义的名称是固定的,但是可以添加新的定义。直到看到@perreal和@BetaThis的解决方案对我不太有效,我才考虑过这种情况。我想这是因为我的问题中遗漏了一个情况。当
某个\u字符串为空时,我会在查找匹配的“%”时收到意外的EOF。我已更新了问题以包括此情况。如果未使用空字符串,则此操作非常有效。
all:
  echo $(SOME_VERSION)

imports: input_file
  sed -n 's/^#define \([^ ]*\) \("*[^"]*"*\)/\1=\2/p' input_file > imports

include imports
VARS := $(shell  sed -n "s/^\#define .* //p" filename)

A = $(word 1, $(VARS))
B = $(word 2, $(VARS))