首页 > 解决方案 > 如何循环通过 Makefile (GNU) 中的文本文件?

问题描述

我在一个文本文件中有一个 ID 列表:pid.txt 用空格分隔。我想为每个 ID 运行一个 python 程序。这基本上意味着我想运行以下命令:

python ./program.py id1
python ./program.py id2
python ./program.py id3
...

我正在创建一个makefile来做到这一点。但我无法编写适当的代码。我尝试了很多东西,例如:

target:
       $(foreach var,$(pid.txt),python ./program.py $(var);)

但这些方法都不起作用。另外,我想并行化这个。使用-j。

标签: loopsmakefilegnu-makegnu

解决方案


我不会费心尝试使用 make 构造,只需调用一个简单的 shell 脚本。例如:

target:
        for id in $$(cat pid.txt); do python ./program.py "$$id"; done

根据所需的行为,您可能需要执行以下操作:

...; do python ./program.py "$$id" || exit 1; done失败时中止。


推荐阅读