首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多次在文件夹上下文上执行命令

多次在文件夹上下文上执行命令
EN

Stack Overflow用户
提问于 2020-02-12 20:50:53
回答 1查看 61关注 0票数 0

我有一个makefile,它在proj根目录下。

文件夹proj是主文件夹,它下面有ws-ledtools-ext等文件夹,其中包含停靠文件。此外,还有Makefile,它位于根下,需要运行所有命令。

这是文件夹结构

代码语言:javascript
复制
proj
 - ws-led
  — Dockerfile
 - tools-ext
  — Dockerfile    
- Makefile

我需要的是对rot下的每个文件夹进行cd (我们有更多的文件夹)并运行:

docker build <folder name> .

示例:(完全类似于手动运行以下命令)

代码语言:javascript
复制
cd ws-led
docker build -t ws-led .

cd tools-ext
docker build -t tools-ext .

我尝试使用以下方法(可能不是repo param,而是在Makefile的同一级别的所有文件夹上运行)

类(CURDIR)…

代码语言:javascript
复制
all: pre docker-build
.PHONY: pre docker-build

repos := ws-led tools-ext

pre:
    $(patsubst %,docker-build,$(repos))

docker-build:pre
    cd $*; docker build -t $* . >&2 | tee docker-build

在使用这个im时,会得到一个错误:

代码语言:javascript
复制
invalid argument "." for "-t, --tag" flag: invalid reference format

你知道这是怎么回事吗?或者我可以做得更好?

由于我有许多repos/文件夹,所以我想使用make来处理它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-12 23:17:34

有不止一种方法可以做到。

您可以使用bash循环:

代码语言:javascript
复制
docker-build:
    for dir in $(repos); do cd $$dir; docker build -t $$dir . >&2 | tee docker-build; done

或者使用模式规则(或者在本例中是静态模式规则):

代码语言:javascript
复制
REPO_BUILDS := $(addsuffix -build, $(repos))

docker-build: $(REPO_BUILDS)

.PHONY: $(REPO_BUILDS)
$(REPO_BUILDS): %-build:
    cd $*; docker build -t $* . >&2 | tee docker-build
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60196647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档