這不是在紅寶石工作,我不明白爲什麼?從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