2016-08-13 70 views
2

我需要设置一些环境变量,然后在windows机器上执行命令,然后在ruby脚本中调用它。 在Linux上,你可以做在windows中使用环境变量调用Ruby系统

cmd = 'echo $FOO' 
system({'FOO' => '123'}, cmd) 

OUTPUT is "123" 

但在这个不工作的窗口,输出为$ FOO

如何设置环境变量在Windows红宝石系统调用。我几个变种的ENV,并得到错误或仍然无法正常工作。

system({$ENV[:VAR1] => "WIN7"}, 'echo $ENV[:VAR1]') 
+0

什么是你想发布你的shell命令? –

+0

我试图访问环境变量,如我在Windows使用$ ENV [:var]的示例中所述,但访问此环境变量似乎不起作用。 – ibaralf

回答

3

Ruby的system()所调用的任何主机的默认外壳,所以你需要说的是外壳的语言

Windows上的默认shell为cmd.exe,其中环境变量FOO必须引用为%FOO%才能展开。

因此,你的代码应该是:

cmd = 'echo %FOO%' 
system({'FOO' => '123'}, cmd) 
+0

嗨mkelement,与普通变量,是的,它工作正常,但我想要做的是使用环境变量(ENV)。那有意义吗?对不起,如果我不是很清楚。 – ibaralf

+0

@ibaralf:在'cmd.exe'中,_all_变量是_environment_变量,所以'%FOO%'确实引用了环境变量'FOO'。 – mklement0