【问题标题】:how to use bash script variable which read from file each line in makefile如何使用从文件中读取makefile中每一行的bash脚本变量
【发布时间】:2017-02-10 17:54:28
【问题描述】:

我对 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)

我应该如何解决?

感谢您的宝贵时间。

【问题讨论】:

    标签: shell makefile


    【解决方案1】:

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

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

    CONTEXT = $(shell ./myScript)
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-19
      • 2011-12-18
      • 1970-01-01
      相关资源
      最近更新 更多