为什么从Ruby调用Bash命令会抛出错误?

时间:2011-06-02 14:28:41

标签: ruby directory

我正在尝试使用Ruby在某些图像上执行以下bash命令:

class Pingcrush
  def initialize
    Dir.foreach('drawable') do |item|
      next if item == '.' or item == '..'
      # do work on real items
      if item.end_with?(".png") then
        %x["wine pngcrush.exe -brute drawable/#{item} new/#{item}"]
      end
    end
  end
end
Pingcrush.new

我所在的目录是drawablenew的父目录,但是,当我尝试运行脚本时,我总会得到同样的错误:

sh: wine pngcrush.exe -brute drawable/feed_cl.png new/feed_cl.png: not found

为什么会这样?我尝试切换我在Ruby中调用的路径,似乎无法使其工作。

3 个答案:

答案 0 :(得分:5)

它执行你的shell却找不到酒。尝试设置安装葡萄酒的完整路径。

which wine

答案 1 :(得分:1)

不要在命令周围加上引号。

答案 2 :(得分:1)

从命令行输入wine pngcrush.exe -brute drawable/feed_cl.png new/feed_cl.png时,您已经检查过了,不是吗?