【发布时间】:2021-07-29 10:21:18
【问题描述】:
我正在使用 makefile 遍历目录,将文件名存储在变量中,使用正则表达式提取文件号并打印文件号。
下面是我正在使用的代码块:
1. set -e ;\
2. for file in $$(MY_HOME)/mydir/python_files/ ;\
3. do \
4. string =$${file} ;\
5. [[ $$string =~ .*clause([0-9]*).py ]] ;\
6. file_num=$${BASH_REMATCH[1]} ; \
7. python $$(My_Home)/base_py_<file_num>.py ;\
8. done ;\
第 7 行是我想要包含在 for 循环中的 makefile 中的命令。我想要上面
提前致谢
【问题讨论】:
-
另请阅读Recursive make considered harmful。如果允许,请考虑使用GNU findutils 或使用nftw(3) 和其他syscalls(2) 编写您的C 程序。另见Advanced Linux Programming 和GNU bash 的文档
-
我是这方面的初学者。只是想澄清一下,我们可以像上面所示的那样在 for 循环中运行 makefile 的一些命令吗?
-
也许您想要一个更具可读性的软件...您可以编写的代码并不总是您应该编写的代码。您可能会从 现有 开源软件中获得灵感,例如 FLTK、RefPerSys、ninja 等...另请参阅 linuxfromscratch.org - 我认为您的
Makefile不是解决问题的最佳工具 -
另外,请提供一些minimal reproducible example - 你的代码块不是一个。您可以使用 GNU autoconf 或 ninja 吗?您是否允许阅读他们的文档,下载他们的源代码并进行研究(他们都是open source software...)。当然,有几种替代方法可以解决您的问题(不清楚)
标签: linux bash unix makefile automation