2016-08-13 3 views
2

루비 스크립트 내에서 호출하는 Windows 시스템에서 명령을 실행하기 전에 일부 환경 변수를 설정해야합니다. Linux에서, 당신은 Windows에서 환경 변수를 사용하는 Ruby 시스템 호출

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

OUTPUT is "123" 

하지만이 작동하지 않는 창에

, 출력이 내가 창문에 환경 변수를 설정하는 방법 $ FOO

시스템 호출을 루비 할 수 있습니다. ENV의 여러 변형과 오류가 있거나 여전히 작동하지 않습니다. 호스트의 기본 쉘이 무엇이든

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

당신이 당신의 쉘에 발행하려는 명령이 무엇입니까? –

+0

Windows에서 $ ENV [: var]를 사용하는 예제에서 설명한 것처럼 환경 변수에 액세스하려고 시도하지만이 환경 변수에 액세스하는 것이 작동하지 않는 것 같습니다. – ibaralf

답변

3

루비의 system()를 원용하는, 그래서 해당 쉘의 언어를 구사해야합니다.

Windows의 기본 쉘은 cmd.exe이며 확장하려면 환경 변수 FOO%FOO%으로 참조해야합니다.

따라서, 귀하의 코드는 다음과 같아야합니다

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

안녕하세요 mkelement, 일반 변수와 함께 네, 잘 작동하지만, 내가 뭘 하려던 환경 변수 (ENV)를 사용했다. 말이 돼? 미안하지만 내가 분명하지 않다면. – ibaralf

+0

@ibaralf :'cmd.exe'에서 _all_ 변수는 _environment_ 변수이므로 '% FOO %'는 실제로 환경 변수 'FOO'를 참조합니다. – mklement0

관련 문제