如何解决在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”之前写入临时脚本?
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。