2016-08-13 96 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