这个问题有点像我以前的(已回答)问题:
How to run multiple external commands in the background in ruby
但是,在这种情况下,我正在寻找一种方法来将STDIN上的ruby字符串提供给外部进程,就像这样(下面的代码无效,但说明了我的目标):
#!/usr/bin/ruby
str1 = 'In reality a relatively large string.....'
str2 = 'Another large string'
str3 = 'etc..'
spawn 'some_command.sh', :stdin => str1
spawn 'some_command.sh', :stdin => str2
spawn 'some_command.sh', :stdin => str3
Process.waitall
答案 0 :(得分:0)
这似乎有效:
data = [str1, str2, str3]
data.each do |input|
fork do
IO.popen(COMMAND, 'r+'){|n| n.print input}
end
end
Process.waitall
答案 1 :(得分:0)
我想将一个应用的输出拆分为另外两个应用,但无法使tee
工作。我使用了这个红宝石脚本。
alpha = IO.popen( "some shell command" , 'r+' )
bravo = IO.popen( "other command" , 'r+' )
ARGF.each_line do |line|
alpha << line
bravo << line
end