在Java中,使用System.getenv()
读取环境变量。
有没有办法在Scala中执行此操作?
答案 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"))