从ruby执行shell命令

时间:2010-10-25 16:54:42

标签: ruby

这不适用于红宝石,我不明白为什么?

#!/usr/bin/env ruby

exec "sort data.txt > data.sort"

data.txt是逗号分隔文件。无论如何..如果我尝试在shell中执行该行,它的工作没有问题。

当我尝试从我的脚本运行此脚本时,我得到一个空文件。

2 个答案:

答案 0 :(得分:0)

你试过吗

%x(sort data.txt > data.sort)

答案 1 :(得分:0)

这不是一个真正的答案,但我想分享一下,你对exec的原始用法实际上对我有用。这就是我设置它的方式。

data.txt中

"1,2,3,4,5,6,7,8"

sort.rb(我不知道你的排序是什么,所以我只是写出相同的数据)

File.open(ARGV[0]){|f| puts f.read}

irb session

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。