Я пытаюсь получить переменную env в Kotlin, используя другую переменную среды. Например, если у меня есть уникальная переменная для каждого региона AWS, мне нужно что-то вроде этого: System.getenv("Key"-$aws_region")
. Однако я не могу заставить его работать прямо сейчас (он всегда равен нулю). Правилен ли следующий синтаксис или я что-то упустил?
val awsRegionProvider: String =
when {
System.getenv("aws_region") != null -> System.getenv("aws_region")
else -> ""
}
}
val uniqueKey: String =
System.getenv("UniqueKey-$awsRegionProvider")
Я уже добавил aws_region и UniqueKey-us-west-2 в свои переменные env, но uniqueKey жалуется на то, что он нулевой. Дайте мне знать, если есть дополнительные детали, которые я могу добавить.
Извините, я удалил часть Provider, в этом не было необходимости. Понятно, тогда я буду использовать этот синтаксис. Любые идеи об использовании var для получения env var?
Вы можете попробовать переопределить геттеры следующим образом:
val awsRegionProvider: String get() = System.getenv("aws_region")?: ""
val uniqueKey: String get() = System.getenv("UniqueKey-$awsRegionProvider")
Пробовал это, но все еще получаю System.getenv("UniqueK…y-$awsRegionProvider") must not be null
. Я знаю, что aws_region и UniqueKey-us-west-2 существуют, и что aws_region указывает на us-west-2... не знаю, в чем проблема.
Похоже, что-то не так с моими переменными env в Teamcity, так как вы были единственным комментарием, который я продвинул и принял ваше решение. Спасибо за помощь!
Что такое
Provider
? (Кроме того, вы можете заменить весь блокwhen
наSystem.getenv("aws_region") ?: ""
.)