Обратите внимание, что имена переменных в верхнем регистре, как правило, небезопасны. $ENV
, например, является особенным во многих оболочках. В этих оболочках его значение должно быть путем к файлу, который будет получен перед запуском определенных типов оболочек. Оболочка bash
использует $ENV
в режиме POSIX.
Так, вbash
:
declare -A account
account["develop"]=12345678
account["staging"]=9128312
account["production"]=123123
mode=$run_mode
aws events put-targets \
--rule {{ stack_name | lower }}-hello-world \
--targets "Id"="1","Arn"="arn:aws:lambda:us-west-2:${account[$mode]}:function:hello-wolrd"
Это устанавливает ассоциативный массив, account
, который содержит данные для режимов разработки, подготовки и производства. Затем он определяет используемый нами режим и выполняет команду с правильными данными из массива account
. Предполагается, что переменная run_mode
является переменной окружения, содержащей одну из строк develop
, staging
или production
.
Ассоциативные массивы были введены в bash
4.0.
Я использовал вашу команду aws
так, как вы ее написали (, за исключением добавления новых строк и моей account
переменной ), хотя {{ stack_name | lower }}-hello-world
, вероятно, не соответствует вашим ожиданиям (он попытается выполнить lower
как команду ). Поскольку я не знаю aws
, я не знаю, как это должно выглядеть, но, вероятно, это следует процитировать.
Устранение проблем пользователя mosvy в комментариях:В случае, когда переменные DEV_ACCOUNT
и т. д. являются переменными среды, и правильный выбор должен быть сделан на основе того, что представляет собой переменная ENV
:
declare -A account
account["DEV"]=$DEV_ACCOUNT
account["STAGE"]=$STAGE_ACCOUNT
account["PRD"]=$PRD_ACCOUNT
mode=$ENV
# the rest as before
Если у вас возникла эта проблема, потому что вы загрузили Kali для WSL напрямую в виде пакета.appx (не из магазина MS Store)-Я читал в другом посте, что этот пакет кажется сломанным. (Версия для MS Store у меня работала без проблем)
Но если у вас нет доступа к MS Store --Чтобы решить конкретную проблему недопустимой подписи -, у меня сработало следующее:
wget https://http.kali.org/kali/pool/main/k/kali-archive-keyring/kali-archive-keyring_2020.2_all.deb
apt install./kali-archive-keyring_2020.2_all.deb
как root (или используйте sudo )вторая команда выдает ошибку в конце, которую можно игнорировать. После этого apt -получить обновление работало без проблем.
Если kali -архив -keyring _2020.2 _all.deb был обновлен, вы можете проверить здесь наличие новых версий и изменить ссылку :https://http.kali.org/kali/pool/main/k/kali-archive-keyring/