如何在ruby中编写命令行管道

时间:2011-06-09 13:26:52

标签: ruby command-line

我想在ruby中使用命令行命令创建类似管道的shell脚本。所以我在管道中有几个步骤,每一步都是命令行,如命令(使用特定工具和通常的输入和输出文件,如运行xtool -i xx -o xxx)。

提前致谢

马克

3 个答案:

答案 0 :(得分:3)

您可以通过使用反引号或使用%x:

来引用外部程序
x = `echo "hello"`
y = %x{echo "hello"}

您可以通过$?查看最后一个流程:

`rm an_existing_file`
$?.exitstatus # now: o

`rm missing_file`
$?.exitstatus # now: 1

如果您需要做更复杂的事情,请查看Ruby Process Docs

答案 1 :(得分:0)

很难知道你在问什么,但是如果你想编写一个可以在命令行的管道中使用的Ruby命令行应用程序,但也可能使用命令行参数,你可以这样做: / p>

require 'optparse'

input = STDIN
output = STDOUT
option_parser = OptionParser.new do |opts|
  options.on("-i FILE","Input file (defaults to stdin)") do |filename|
    input = File.new(filename)
  end
  options.on("-o FILE","Output file (defaults to stdout)") do |filename|
    output = File.new(filename,'w')
  end
end

option_parser.parse!

input.readlines.each do |line|
  # do something with line
  output.puts "Some awesome output"
end
output.close # NOTE, this must be the last line of your program since
             # you are possibly closing the standard output

答案 2 :(得分:0)

您还拥有shsystem内核方法。您可以编写自己的shell脚本并使用system('yourscript.sh')调用它。

如果命令给出零退出状态,则

system返回true,否则返回false。