gpt4 book ai didi

makefile - Makefile中的字典/ map /查找表

转载 作者:行者123 更新时间:2023-12-04 13:46:40 24 4
gpt4 key购买 nike

我需要在我的Makefile中创建一个查找表/字典/映射,以查找键值信息。

我一直在尝试使用ifeq语句执行相同的操作,但是我的语句似乎失败了:

# this gets the account id from the current user's ARN, you must have the AWS CLI and jq installed
AWS_ACCOUNT_ID:=$(shell aws iam get-user | jq -r '.User.Arn' | awk -F ':' '{print $$5;}')

# define a friendly account name for output
ifeq ($(AWS_ACCOUNT_ID), 123456)
AWS_ACCOUNT_FRIENDLY:=staging
endif

ifeq ($(AWS_ACCOUNT_ID), 789012)
AWS_ACCOUNT_FRIENDLY:=preprod
endif

ifeq ($(AWS_ACCOUNT_ID), 345678)
AWS_ACCOUNT_FRIENDLY:=production
endif

它似乎只能与第一个值 123456一起使用,而不能与其他值一起使用。

有没有一种方法可以在Make中定义字典/ map ,以通过帐户ID的键简单地查找帐户的友好名称?

最佳答案

我无法解释为什么您看不到您期望的行为:我将验证AWS_ACCOUNT_ID的值是否符合您的期望:也许您的shell脚本没有按照您的期望进行操作。尝试添加如下内容:

AWS_ACCOUNT_ID := $(shell ...)
$(info AWS_ACCOUNT_ID = '$(AWS_ACCOUNT_ID)')

看看你得到什么。

但是与您的一般性问题有关,我更喜欢在处理这种情况时使用 constructed macro names,而不是使用许多 ifeq值:
AWS_123456_FRIENDLY := staging
AWS_789012_FRIENDLY := preprod
AWS_345678_FRIENDLY := production


AWS_ACCOUNT_ID := $(shell ...)

AWS_ACCOUNT_FRIENDLY := $(AWS_$(AWS_ACCOUNT_ID)_FRIENDLY)

关于makefile - Makefile中的字典/ map /查找表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40919502/

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