如何在Scala中读取环境变量

时间:2012-04-03 16:13:48

标签: scala environment-variables

在Java中,使用System.getenv()读取环境变量。

有没有办法在Scala中执行此操作?

6 个答案:

答案 0 :(得分:198)

自Scala 2.9起,您可以使用sys.env获得相同的效果:

scala> sys.env("HOME")
res0: String = /home/paradigmatic

我认为使用Scala API而不是Java是很好的。目前有几个项目将Scala编译到除JVM(.NET,javascript,native等)之外的其他平台。减少对Java API的依赖性将使您的代码更具可移植性。

答案 1 :(得分:116)

有一个对象:

scala.util.Properties

这有一组可用于获取环境信息的方法,包括

scala.util.Properties.envOrElse("HOME", "/myhome" )

答案 2 :(得分:23)

同样的方式:

scala> System.getenv("HOME")
res0: java.lang.String = /Users/dhg

答案 3 :(得分:4)

如果使用Lightbend的配置库(默认情况下在Play2和Akka中),则可以使用

foo = "default value" foo = ${?VAR_NAME}

如果存在环境变量VAR_NAME,则覆盖foo的语法。 https://github.com/typesafehub/config#optional-system-or-env-variable-overrides

中的更多详细信息

答案 4 :(得分:4)

getOrElse地图(sys.env)上直接使用val myenv: Map[String, String] = sys.env作为默认值:

sys.env.getOrElse(envVariable, defaultValue)

您将获得envVariable的内容,如果不存在,将获得defaultValue的内容。

答案 5 :(得分:1)

要打印所有环境变量,您可以使用

System.getenv.forEach((name, value) => println(s"$name: $value"))