使文件夹上下文多次执行命令

问题描述 投票:0回答:1

我的makefileproj根目录下。

文件夹proj是主文件夹,并且在其下有包含docker文件的文件夹,例如ws-ledtools-ext等。另外,Makefile位于根目录下,需要运行所有命令。

这是文件夹结构

proj
 - ws-led
  — Dockerfile
 - tools-ext
  — Dockerfile    
- Makefile

我需要将cd移至腐烂下的每个文件夹(我们还有更多文件夹,然后运行:

docker build <folder name> .

示例:(就像手动运行以下命令一样)

cd ws-led
docker build -t ws-led .

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

我尝试以下操作(也许不是在我的Makefile的同一级别上的所有文件夹上都运行repo参数)

像(CURDIR)…

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

使用此即时消息时出现错误:

invalid argument "." for "-t, --tag" flag: invalid reference format

任何主意,这是怎么了?还是我可以做得更好?

由于我有很多存储库/文件夹,我想使用make来处理它

linux bash shell makefile gnu-make
1个回答
0
投票

有多种方法可以实现。

您可以在循环中使用bash:

docker-build:
    for dir in $(repos); do cd $$dir; docker build -t $$dir . >&2 | tee docker-build; done
© www.soinside.com 2019 - 2024. All rights reserved.