我正在使用zsh,并将我的aws环境导出到zshrc文件中,如下所示:
export AWS_ACCESS_Development = 1234
export AWS_SECRET_Development = 1234
export AWS_ACCESS_Production = 1234
export AWS_SECRET_Production = 1234我需要有多个环境,这样当我为不同的环境运行命令时,我可以很容易地只使用环境名称,而不是所有的KEY-SECRET:
ENV-1:
export AWS_ACCESS_Development = 1234
export AWS_SECRET_Development = 1234
ENV-2:
export AWS_ACCESS_Development = 1234
export AWS_SECRET_Development = 1234发布于 2020-09-07 19:46:19
这是可能的,但其语法并不十分美观。
在一般编程语言中,您可以将环境建模为关联数组,其中键是环境id(在本例中为ENV-1、ENV-2),值也是关联数组,其中键是ACCESS或SECRET,值是相应的开发编号。
AFIK,Zsh不提供嵌套的关联数组(至少在我使用的5.5.1版本中不提供),但您可以用间接变量名引用替换其中一个级别的数组。
假设您将环境定义为关联数组
declare -A env1 env2
env1=( [ACCESS]=1234 [SECRET]=2345 )
env2=( [ACCESS]=3456 [SECRET]=4567 )使用变量env作为常规环境访问器。如果您知道自己处于环境1中,请设置
env=env1然后,您可以通过以下方式(例如)访问此密码值
secret_development=${${(P)env}[SECRET]}(P)关心的是间接性。为了更好的易读性,在这个扩展表达式中添加一些空格是很有诱惑力的,但不要这样做。该表达式将变为无效。
https://stackoverflow.com/questions/63751631
复制相似问题