我在Windows7机器的cygwin上运行的ruby脚本中调用growlnotify时遇到了一些问题。我怀疑这是可行的,但是有几层太多的解释正在发生,我不知道正确的转义序列需要是什么。
以下代码(未指定自定义图标)工作正常:
#!/usr/bin/ruby
l = "Hello World"
system("/cygdrive/c/Program\\ Files\\ \\(x86\\)/Growl\\ for\\ Windows/growlnotify /t:testedfa \'#{l}\'")然而,当我尝试指定一个图标时,事情开始失败了。根据我尝试了多少层转义字符,该命令要么什么也不做,要么就会崩溃。具体地说,使用下面显示的代码,我根本没有从Growl得到任何响应。
#!/usr/bin/ruby
l = "Hello World"
system("/cygdrive/c/Program\\ Files\\ \\(x86\\)/Growl\\ for\\ Windows/growlnotify /t:testedfa /i:C:\\\workspace\\\tryCPUnit\\\amp\\\testedfa\\\pass.png \\\'#{l}\\有什么想法吗?
发布于 2011-09-08 07:28:25
尝试使用多参数形式的system,它将通过绕过外壳删除一层转义。如下所示:
system(
'/cygdrive/c/Program Files (x86)/Growl for Windows/growlnotify',
'/t:testedfa',
'/i:C:/workspace/tryCPUnit/amp/testedfa/pass.png',
l
)\\通常接受正斜杠或反斜杠,所以我稍微清理了一下你的Windows开关,如果Windows不喜欢该路径,请回到Windows。
使用单一参数system几乎总是一个即将发生的错误,除非没有其他方法(我想不出什么时候会有更好的方法)。
https://stackoverflow.com/questions/7341520
复制相似问题