gpt4 book ai didi

bash - 如何在保留换行符的同时将命令的输出分配给 Makefile 变量

转载 作者:行者123 更新时间:2023-12-04 15:47:56 25 4
gpt4 key购买 nike

我想将命令的输出分配给 Makefile 变量,但约束条件是我需要保留换行符。

该值是私钥,因此以下代码将导致格式错误的 key :

SHELL=/bin/bash

APP_NAME?=foo

ifdef CI
export DEPS_PRIVATE_KEY=$(shell echo $(CI_BASE64_PRIVATE_KEY) | base64 -d)
endif

build:
@docker build --no-cache --build-arg DEPS_PRIVATE_KEY -t $(APP_NAME) .
.PHONY: build

我意识到我可以在 bash 中设置值,然后像这样调用 make build:

DEPS_PRIVATE_KEY="$(echo $CI_BASE64_PRIVATE_KEY | base64 -d)" make build

但我想知道是否可以将此逻辑封装在 Makefile 中。

非常感谢任何帮助。

最佳答案

使用 make 变量作为 shell 环境变量的中间变量——尤其是当值是多行字符串时——可能是无用的复杂。因此,最简单的可能是将环境变量定义添加到您的配方中:

$ cat Makefile
build:
@export TXT="$$(echo "$$(B64)" | base64 -d)"; \
printenv TXT
$ make B64="$(printf 'a\nb\n' | base64)"
export TXT="$(echo "YQpiCg==" | base64 -d)"; \
printenv TXT
a
b

关于bash - 如何在保留换行符的同时将命令的输出分配给 Makefile 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54965842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com