我有一个Makefile,我需要在其中将图像名称传递给另一个脚本,但是问题是,图像名称在其行中具有例如:image.name-v1:latest。按照谷歌make文件在变量中有:会导致问题。如何在Makefile中解决此问题。以下是我尝试在其中IMAGE具有image.name-v1:latest
的示例代码IMAGE2 ?= ''
.PHONY: image
image:
IMAGE2 := $(subst :,\:,$(IMAGE_R)) ## IMAGE_R is a run time variable for make target
rr/image.sh $(IMAGE2)
错误:
IMAGE2 := docker-rs\:latest ## Test Image using Image Reference
/bin/sh: 1: IMAGE2: not found
Makefile:75: recipe for target 'image' failed
make: *** [image] Error 127
SHELL SCRIPT:image.sh
#!/bin/bash
set -ex
IMAGE="$1"
echo "Image: $IMAGE"
您可以尝试像这样逃避冒号:
# Mock IMAGE with colon in name
IMAGE := test:123
# Create new variable adding an escapeing slash
IMAGE2 := $(subst :,\:,$(IMAGE))
# Use IMAGE2 from here on
.PHONY: xyz-pp
xyz-pp: $(IMAGE2)
.PHONY: $(IMAGE2)
$(IMAGE2):
@echo rr/image.sh $(IMAGE2)
touch $(IMAGE2)
所以在这里,我只是将“:”替换为“:”到变量IMAGE2中,然后使用它。
[注:我通过回显您的命令(因为我没有该文件)并触摸'IMAGE2以创建文件”来进行了测试