如何使用bash脚本变量从makefile中的每一行读取

时间:2017-02-10 08:35:27

标签: shell makefile

我不熟悉Makefile,我尝试在Makefile中运行一段bash脚本,并将该变量用作目标中的结果。

我的bash脚本如下,从文件中读取,将每一行合并到变量

#!/bin/bash

input="./logs"
context=""

while IFS= read -r var; \
do \
    context+="\n$var"; \
done < "$input"

echo -e $context

我的记录文件,如下所示

- foo
- bar
- barzz

并且bash脚本正常工作

但是当我将它移动到Makefile时,它无法正常工作

生成文件

.PHONY: test pack clean

INPUT = "./logs"
CONTEXT = ""

while IFS= read -r var; \
do \
    CONTEXT+="\n$(var)"; \
done < "$(INPUT)"


test:
    echo -e $(CONTEXT)

我该如何解决?

谢谢你的时间。

1 个答案:

答案 0 :(得分:1)

我假设这里的主要目标是使用CONTEXT文件中的所有值填充logs变量,而不是解决运行该shell行的make。我会将小shell脚本保留在它自己的单独文件中,现在让我们称之为myScript。你可以保留你拥有的东西。

现在对于makefile,你可以通过以下方式初始化变量:

CONTEXT = $(shell ./myScript)

我个人认为这是实现目标的最简洁方法。如果您真的想要makefile中的所有内容,请查看this answer