ruby执行shell命令错误

时间:2013-11-19 17:25:37

标签: ruby

以下是代码do.rb

    #!/usr/bin/ruby

    def open
      fp = File.open("input")
      yield fp
      fp.close
    end

    open do |fp|
      while line = fp.gets
        puts `du #{line} -h`
        # puts `du -h #{line}` # this works fine
      end
    end

input文件:

    1.rb
    2.rb

如果我运行ruby do.rb,则只返回command not found 我必须在-h之前更改#{line} 我不是为什么。感谢。

1 个答案:

答案 0 :(得分:2)

IO#gets返回的字符串包含行分隔符。

您应该使用String#chomp删除行分隔符:

puts `du #{line.chomp} -h`