ruby无法添加unix内容

ruby无法添加unix内容,ruby,stdout,Ruby,Stdout,我的ruby puts因为某种原因卡住了我不知道为什么, 我通过backticks传递的命令是正确的,脚本在puts 2和puts 2命令之间卡住,因此它基本上不会退出包含unix sort/cut的puts命令 #!/usr/bin/ruby/ require 'fileutils' @raw_file=File.open(ARGV[0],"r") unless File.open(ARGV[0],"r").nil? #agg_file=File.open(ARGV[1],"r") unle

我的ruby puts因为某种原因卡住了我不知道为什么, 我通过backticks传递的命令是正确的,脚本在puts 2和puts 2命令之间卡住,因此它基本上不会退出包含unix sort/cut的puts命令 #!/usr/bin/ruby/

require 'fileutils'

@raw_file=File.open(ARGV[0],"r") unless File.open(ARGV[0],"r").nil?
#agg_file=File.open(ARGV[1],"r") unless File.open(ARGV[1],"r").nil?
@pwd=Dir.pwd
puts @pwd
#do the raw file first
 def do_raw
  tmp_raw=File.new("#{@pwd}/tmp_raw","w")
  #unix cut and sort
  puts 1
  tmp_raw.puts(`cat #{@raw_file} | cut -f1,6,3,4,2,5,9,12 | sort -k1,1 -k8,8`)
  puts 2
  tmp_raw.close
  tmp_raw=File.open("#{@pwd}/tmp_raw","r")
  final_file=File.new("#{@pwd}/uniques_raw","w")
    #merge the lines and append count
    vector =IO.readlines(@tmp_raw.path)[1]
    count=1
     while (line=tmp_raw.gets) do
       if line.eql? vector
          count=count+1
       else
          vector=line
          final_file.write("#{line}\t#{count}")
          count=1
       end
     end
     #job done, close and clean file
     tmp_raw.close
     final_file.close
     tmp_raw.remove
 end

#run jobs
 do_raw
但一个简单的例子是: tmp_原始看跌期权(“blabla”) 工作正常,所以文件正常

puts命令卡住了,我在终端上尝试了这个简单的命令,它工作得很好,文件也存在,向其中写入一些随机文本也很好
有什么想法吗?我明白了
@raw_file
是一个
文件
对象,而不是文件名本身。然后不能对
文件
对象的字符串表示形式调用
cat(1)
命令

你应该写信的

tmp_raw.puts(`cat #{ARGV[0]} | cut -f1,6,3,4,2,5,9,12 | sort -k1,1 -k8,8`)

我猜
tmp\u raw.close
可能会刷新内容?thx但不幸的是,它没有,它真的从来没有从puts命令中出现过,我添加了一个puts“2”命令,它从不打印…什么是
@raw\u puts
。应该是
@raw_file
很抱歉,这是我的错误复制粘贴,我已经修改了它,thx在修复变量名后,您是否仍然存在问题?因为这看起来确实是问题的根源。嗨,野垣,你是对的,谢谢!我已经用cat{@raw_file.path}解决了这个问题,谢谢你宝贵的建议!