从Groovy中的文件加载环境变量

时间:2017-03-30 17:51:10

标签: groovy

我有一个带有变量的外部文件,我想在我的groovy脚本中访问。

myfile.conf:

variable1=Value1
export variable2=Value2

我想在我的groovy脚本中执行以下操作:

System.getenv("variable1")
System.getenv("variable2")

我已尝试运行"source myfile.conf".execute().waitFor(),但我无法访问这些变量。

1 个答案:

答案 0 :(得分:0)

正如其他人所说,严格来说,你无法改变正在运行的进程的环境变量。

但是,假设您想要“执行getenv之类的操作”以便在执行脚本后获取某些变量的值,您可以执行以下操作:

def map = [:]
def envAsText = ['sh', '-c', 'source myfile.conf 2>&1 >/dev/null && env'].execute().text
envAsText.eachLine { (key,value) = it.split('=', 2); map[key] = value }

这将创建一个空地图,然后执行子进程以“获取”您的文件,在采购时过滤掉所有输出,然后使用“env”命令打印环境。 (也假设类似unix的系统,这是从你的“myfile.conf”暗示的)。最后,收集输出并存储到“map”。

在此之后,“map”包含子进程的所有环境(现已完成),包括“variable2”:

map['variable2'] // this contains "Value2"