用这个:
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”之前写入临时脚本?