2011-12-16 3 views
0

저는 이것을 루비에서 사용하려고합니다. 일부 초기 환경 변수가 설정된 후 쉘에서 실행할 명령을 전달할 수있는 쉘 스크립트가 있습니다. 그래서 루비 코드에서 나는이 일을 해요 ..Ruby가 내부 프로세스의 출력을 표시하지 않습니다.

# ruby code 
my_results = `some_script -allow username -cmd "perform_action"` 

문제는 스크립트 "some_script는"그것의 자신의 환경에서 "perform_action"를 실행하기 때문에, 나는 결과를보고 아니에요 때 내가 출력을 변수 " my_results ". 그래서 루비가 "my_results"를 넣으면 스크립트가 명령 "perform_action"을 처리하기 전에 초기 코멘트를주게됩니다.

"my_results"에 perform_action의 출력을 가져올 수있는 단서가 있습니까?

감사합니다.

+0

'스크립트 "some_script"가 자신의 환경에서 "perform_action"을 실행하기 때문에 "my_results"변수를 출력 할 때 결과가 표시되지 않습니다.'some_script'가 실제로 결과를 인쇄하지 않는다는 것을 의미합니다. 'perform_action'에 대해 수행 할 수있는 작업은 없습니다. 다른 말로하면 : 응? – sepp2k

답변

0

backticks는 stdout 만 캡처합니다. stdout을 리디렉션하거나 stderr과 같은 다른 핸들에 쓰면 출력에 나타나지 않습니다. 그렇지 않으면, 그것은해야한다. 무언가가 표준 출력으로 들어가는 지 또는 환경에 의존하지 않는지는 리디렉션이나 다른 핸들에 대한 직접 쓰기에서만 발생합니다.

시도는 스크립트가 실제로 쉘에서 stdout에 출력 여부를 확인합니다 : 어떤 경우에

$ some_script -allow username -cmd "perform_action" > just_stdout.log 
$ cat just_stdout.log 

, 이것은 루비의 문제가 아닙니다. (또는 적어도 내가 올바르게 당신을 이해한다면 그렇지 않습니다.) 어떤 언어에 대해서도 같은 대답을 얻을 것입니다.

관련 문제