2013-07-02 2 views
1

script.sh루비 쉘 스크립트 실시간 출력

echo First! 
sleep 5 
echo Second! 
sleep 5 
echo Third! 

another_script.rb

%x[./script.sh] 

내가 원하는 another_script.rb 인쇄하기 script.sh의 출력으로 그것은 일어난다. 즉 "First!"를 인쇄하고 5 초를 기다리며 "Second!"를 인쇄하고 5 초를 기다리는 등의 작업을 수행합니다.

Ruby에서 외부 스크립트를 실행하는 방법은 여러 번 읽었지만 아무 것도 보이지 않습니다. . 이렇게 어떻게 요구 사항을 충족 할 수

답변

1

당신은 항상 루비에서 이것을 실행할 수 있습니다 : 그것은 중요

system("sh", "script.sh") 

주 당신이 실행뿐만 아니라 적절한 #!/bin/sh 헤더가없는 한이를 실행하는 방법을 지정합니다 비트 사용 가능

+0

스크립트에 적절한 she이 있습니다. 쾅. 'system "./script.sh"'는'% s [./ script.sh]'와 같은 결과를 생성합니다. 스크립트의 출력물을 반환 값으로 얻지 않고 실시간으로 스크립트의 출력물을 출력하려고합니다. –

+0

나를 위해 스크립트를 실행하고 출력을 올바르게 표시합니다. 스크립트의 출력을 캡쳐하고 Ruby로 처리하는 것을 의미합니까? 그렇다면 ['popen3'] (http://www.ruby-doc.org/stdlib-1.9.3/libdoc/open3/rdoc/Open3.html#method-c-popen3)을 사용해야합니다. – tadman

+0

흠, 사용중인 Ruby 버전은 무엇입니까? –