Похоже, у вас все еще непонимание переменных make
.
Непонятно, почему это вообще должна быть переменная. Просто вставьте его в цель:
.PHONY: cleanimage
cleanimage:
${DISPLAYINFO} "Clean untagged image from AWS ECR "
aws ecr batch-delete-image --region $(ECR_REGION) --repository-name $(ECR_REPO) \
--image-ids "$$(aws ecr list-images --region $(ECR_REGION) --repository-name $(ECR_REPO) \
--filter "tagStatus=UNTAGGED" --query 'imageIds[*]' --output json)" || true
${DISPLAYINFO} "Done"
В качестве отступления $(aws...)
не является допустимой make
функцией; Вы имеете в виду $(shell aws ...)
; но опять же, нет нужды оценивать это в make
вообще, если это необходимо только для одной цели.
Там, где вы повторили информацию, есть смысл преобразовать ее в переменную, чтобы вам нужно только изменить его в одном месте.
ECRFLAGS := --region $(ECR_REGION) --repository-name $(ECR_REPO)
.PHONY: cleanimage
cleanimage:
${DISPLAYINFO} "Clean untagged image from AWS ECR "
aws ecr batch-delete-image $(ECRFLAGS) \
--image-ids "$$(aws ecr list-images $(ECRFLAGS) \
--filter "tagStatus=UNTAGGED" --query 'imageIds[*]' --output json)" || true
${DISPLAYINFO} "Done"
Помните, один знак доллара оценивается make
. Если вы хотите пропустить через оболочку буквальный знак доллара, вам нужно его удвоить.