我有一个带有变量的外部文件,我想在我的groovy脚本中访问。
myfile.conf:
variable1=Value1
export variable2=Value2
我想在我的groovy脚本中执行以下操作:
System.getenv("variable1")
System.getenv("variable2")
我已尝试运行"source myfile.conf".execute().waitFor()
,但我无法访问这些变量。
答案 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"