这不是在红宝石工作,我不明白为什么?从ruby执行shell命令
#!/usr/bin/env ruby
exec "sort data.txt > data.sort"
data.txt是逗号隔开的文件。无论如何..如果我尝试在shell中执行该行,它可以毫无问题地工作。
当我尝试从脚本运行这个脚本时,我得到一个空文件。
这不是在红宝石工作,我不明白为什么?从ruby执行shell命令
#!/usr/bin/env ruby
exec "sort data.txt > data.sort"
data.txt是逗号隔开的文件。无论如何..如果我尝试在shell中执行该行,它可以毫无问题地工作。
当我尝试从脚本运行这个脚本时,我得到一个空文件。
这是不是一个真正的答案,但我想分享你的原高管的使用实际上是为我工作。这是我设置它的方式。
的data.txt
"1,2,3,4,5,6,7,8"
sort.rb(我不知道你做了排序,所以我只是写相同的数据出了什么)
File.open(ARGV[0]){|f| puts f.read}
IRB会议
irb(main):001:0> exec "sort data.txt > data.sort"
当我在irb中运行它时,我确实得到了一个data.sort输出文件,并且它包含了“1,2,3,4,5,6,7,8”,如预期的那样。我可以通过irb或从另一个ruby文件运行相同的exec行,并且每次都得到包含数据的输出文件。
我在32位Windows XP系统上运行Ruby 1.8.6。
你试过
%x(sort data.txt > data.sort)
我只是试过,它没有工作..我用你的行为替换exec行吗? – 2010-10-25 17:27:24
哦..我想我现在知道发生了什么......我实际上是在自己的文件上面写了几行文件。 file = File.new(“data.txt”,“w”),然后它可能没有刷新到磁盘..所以当它实际执行命令时,没有什么可以排序的。我如何刷新磁盘? - Ted Flethuseo 8分钟前 啊..我需要关闭文件file.close – 2010-10-25 18:16:28
哦..我想我知道发生了什么......我实际上是在自己的文件上面写了几行文件。 file = File.new(“data.txt”,“w”),然后它可能没有刷新到磁盘..所以当它实际执行命令时,没有什么可以排序的。我如何刷新磁盘? – 2010-10-25 18:07:18
啊..我需要关闭文件file.close – 2010-10-25 18:15:41
谢谢,我通过讨论他们找出事情。 – 2010-10-25 18:17:30