在getRuntime()。exec中使用引号

【字号: 日期:2024-02-20浏览:25作者:雯心
如何解决在getRuntime()。exec中使用引号?

用这个:

Runtime.getRuntime().exec(new String[] {'sh', '-l', '-c', './foo'});

要点:不要在双引号中使用。仅在外壳中编写命令行时使用!

例如,echo 'Hello, world!'(在shell中键入)被转换为:

Runtime.getRuntime().exec(new String[] {'echo', 'Hello, world!'});

(请暂时忘记外壳程序通常具有的内置功能echo,而正在调用它/bin/echo。:-))

解决方法

我想使用字符串作为输入来调用bash。就像是:

sh -l -c './foo'

我想从Java做到这一点。不幸的是,当我尝试使用调用命令时getRuntime().exec,出现以下错误:

foo': -c: line 0: unexpected EOF while looking for matching `'’ foo': -c: line 1: syntax error: unexpected end of file

这似乎与我的字符串没有被EOF终止有关。

有没有一种方法可以将特定于平台的EOF插入Java字符串中?还是我应该寻找另一种方法,例如在调用“ sh”之前写入临时脚本?

相关文章: