我想在ruby中使用命令行命令创建类似管道的shell脚本。所以我在管道中有几个步骤,每一步都是命令行,如命令(使用特定工具和通常的输入和输出文件,如运行xtool -i xx -o xxx)。
提前致谢
马克
答案 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)
您还拥有sh
和system
内核方法。您可以编写自己的shell脚本并使用system('yourscript.sh')
调用它。
system
返回true,否则返回false。