Можно, но синтаксис не совсем красивый.
В общем языке программирования среды должны быть смоделированы как ассоциативный массив, где ключами являются идентификаторы среды (в вашем случае ENV-1, ENV-2), а значения снова представляют собой ассоциативные массивы, где ключом является либо ДОСТУП или СЕКРЕТ, а значение соответствует номеру разработки.
AFIK, Zsh не предоставляет вложенных ассоциативных массивов (по крайней мере, не в версии 5.5.1, которую я использую), но вы можете заменить один из уровней массивов косвенными ссылками на имена переменных.
Предположим, что вы определяете свои среды как ассоциативные массивы.
declare -A env1 env2
env1=( [ACCESS]=1234 [SECRET]=2345 )
env2=( [ACCESS]=3456 [SECRET]=4567 )
Используйте переменную env
в качестве общего средства доступа к среде. Если вы знаете, что находитесь в среде 1, установите
env=env1
Затем вы можете получить доступ к значению SECRET для этого (например) с помощью
secret_development=${${(P)env}[SECRET]}
где (P)
заботится о косвенности. Заманчиво добавить для лучшей читаемости немного пробелов в этом расширенном выражении, но не делайте этого. Выражение станет недействительным.
person
user1934428
schedule
07.09.2020