2011-11-28 257 views
2

我试图做这样的事情从Ruby脚本执行shell命令

listen_for /turn on the living room lights/i do 
    system('/usr/bin/tdtool -n 1') 
    say "Your lights is now turned on" 

    request_completed 
    end 

但里面的系统命令不运行,而不是我得到以下信息:

在关闭设备1, - 你试图使用的方法是不支持的设备

如果我从壳运行完全相同的方法它很好,任何想法?

+0

我也试着用一行代码创建一个test.rb文件,系统为“/ usr/bin/tdtool -n 1”,然后用rvmsudo ruby​​ test.rb执行它,但那也行不通。但是,如果我从终端运行该命令,它的效果很好。 – Marcus

回答

0

这是一个奇怪的。

尝试system('./usr/bin/tdtool -n 1')

- (。)>注意点第一个斜杠(/)

如果上面没有你需要succeed..Perhaps前('\ '),斜线,而不是('/')..

我刚刚测试过我的机器上..

system("cls")  

system("cd\\")  

system("cd c:\\program files\\mysql\\mysql server 5.5\\bin") 

system("mysql.exe -u root -p") 

使用双斜杠'\\'作为'\'是Ruby中的转义字符。希望有所帮助!

+0

是不是特定于Windows样式路径的双斜杠'\\'运算符? – Kashyap