在Java Runtime.getRuntime()。exec(...)中使用引号和双引号

时间:2011-12-07 09:46:17

标签: java unix lisp runtime runtime.exec

我试图在Mac OSX中从Java启动一个Lisp图像。使用我的控制台中的图像我输入以下内容:

lisp_image --eval '(package::method "some_argument")'
一切都运行良好。

在Java中,我有问题是使用Runtime.getRuntime().exec("lisp_image --eval '(package::method \"some_argument\")'").

传递引号和双引号

我也尝试过使用:

Runtime.getRuntime().exec(new String[] {"lisp_image", "--eval ", "\'(package::method ", 
           "--eval ", "\"", "some_argument", "\")", "\'"});

以及使用反斜杠转义的各种事情。没有任何作用....使用String Array似乎只适用于Unix(或Windows)命令。

有什么想法吗?

提前致谢, 斯文

1 个答案:

答案 0 :(得分:12)

据我所知,你想调用带有两个参数的list_image, - eval和'(package :: method \“some_argument \”)',其中单引号就是为了防止shell将其分解为多个论点。

然后你应该使用

Runtime.getRuntime().exec(new String[] {"lisp_image", "--eval", "(package::method \"some_argument\")"});