我不熟悉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)
我该如何解决?
谢谢你的时间。答案 0 :(得分:1)
我假设这里的主要目标是使用CONTEXT
文件中的所有值填充logs
变量,而不是解决运行该shell行的make。我会将小shell脚本保留在它自己的单独文件中,现在让我们称之为myScript
。你可以保留你拥有的东西。
现在对于makefile,你可以通过以下方式初始化变量:
CONTEXT = $(shell ./myScript)
我个人认为这是实现目标的最简洁方法。如果您真的想要makefile中的所有内容,请查看this answer。