首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在zsh中为多个键值导出使用单个导出名称(基于环境)?

如何在zsh中为多个键值导出使用单个导出名称(基于环境)?
EN

Stack Overflow用户
提问于 2020-09-05 15:49:37
回答 1查看 31关注 0票数 0

我正在使用zsh,并将我的aws环境导出到zshrc文件中,如下所示:

代码语言:javascript
复制
export AWS_ACCESS_Development = 1234
export AWS_SECRET_Development = 1234

export AWS_ACCESS_Production = 1234
export AWS_SECRET_Production = 1234

我需要有多个环境,这样当我为不同的环境运行命令时,我可以很容易地只使用环境名称,而不是所有的KEY-SECRET:

代码语言:javascript
复制
ENV-1:
export AWS_ACCESS_Development = 1234
export AWS_SECRET_Development = 1234

ENV-2:
export AWS_ACCESS_Development = 1234
export AWS_SECRET_Development = 1234
EN

回答 1

Stack Overflow用户

发布于 2020-09-07 19:46:19

这是可能的,但其语法并不十分美观。

在一般编程语言中,您可以将环境建模为关联数组,其中键是环境id(在本例中为ENV-1、ENV-2),值也是关联数组,其中键是ACCESS或SECRET,值是相应的开发编号。

AFIK,Zsh不提供嵌套的关联数组(至少在我使用的5.5.1版本中不提供),但您可以用间接变量名引用替换其中一个级别的数组。

假设您将环境定义为关联数组

代码语言:javascript
复制
 declare -A env1 env2
 env1=( [ACCESS]=1234 [SECRET]=2345 )
 env2=( [ACCESS]=3456 [SECRET]=4567 )

使用变量env作为常规环境访问器。如果您知道自己处于环境1中,请设置

代码语言:javascript
复制
 env=env1

然后,您可以通过以下方式(例如)访问此密码值

代码语言:javascript
复制
 secret_development=${${(P)env}[SECRET]}

(P)关心的是间接性。为了更好的易读性,在这个扩展表达式中添加一些空格是很有诱惑力的,但不要这样做。该表达式将变为无效。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63751631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档