bash - 简单循环某个目录makefile中的文件
问题描述
我可以轻松地从以下位置打印某个目录中的所有文件bash
:
$ cat go.sh
BASEDIR=~/Downloads
MYDIR=${BASEDIR}/ddd
for f in $(ls ${MYDIR}); do echo $f; done
$ ./go.sh
m.txt
d.txt
当我尝试从中做类似的事情时makefile
效果不佳:
$ cat makefile
BASEDIR = ${HOME}/Downloads
MYDIR = ${BASEDIR}/ddd
all:
for f in $(ls ${MYDIR}); do echo ${f}; done
$ make
for f in ; do echo ; done
这是另一个不起作用的试验:
$ cat makefile
BASEDIR = ${HOME}/Downloads
MYDIR = ${BASEDIR}/ddd
all:
for f in $(shell ls ${MYDIR}); do echo ${f}; done
$ make
for f in d.txt m.txt; do echo ; done
解决方案
也许你可以纯粹用 Makefile 的方式来做?
MYDIR = .
list: $(MYDIR)/*
@echo $^
您仍然可以像这样从 Makefile 运行命令
MYDIR = .
list: $(MYDIR)/*
for file in $^ ; do \
echo "Hello" $${file} ; \
done
如果我是你,我宁愿不混合 Makefile 和基于$(shell ...)
. 我宁愿将目录名称传递给某个脚本并在那里运行循环 - 在脚本内部。
推荐阅读
- python - 当超链接不可见时处理点击
- windows-10 - WIn10 wsl2:Ubuntu变得致命:无法访问'https:无法连接到github.com端口443:连接超时
- r - R循环分位数,除非
- c - 用 c 写“W”字母
- postgresql - Sequelize 如何构建应用程序的聊天部分?
- javascript - 将 9 位数字转换为可读日期
- python - 具有不可见字符的新行不会换行吗?
- c++ - C++ 堆栈溢出,如何增加每个线程的堆栈大小?
- c - D-Bus 返回 UnkownMethod - 表示路径上的对象上没有此类接口
- java - 在 Gridworld 中创建具有位置的新 Actor