当前位置: 首页 > 面试题库 >

在getRuntime()。exec中使用引号

冀永寿
2023-03-14
问题内容

我想使用字符串作为输入来调用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”之前写入临时脚本?


问题答案:

用这个:

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

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

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

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

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



 类似资料:
  • 我正在尝试从Java代码运行另一个程序: 我没有文件。在/home/user/myoldfiles/中创建的shp使用BufferedReader获得的命令输出如下所示: 当我在终端(Ubuntu)中运行下一个命令时 它能打印 并成功创建了。shp文件。我在Java代码中做错了什么?

  • 问题内容: 因此,我们有一个作为Windows服务运行的Java进程。它需要使用执行命令。它执行的命令需要UAC。这是在Windows Server 2008上,听起来您无法为单个可执行文件禁用UAC,所以还有其他方法可以使这项工作吗? 问题答案: 如果您的Java应用程序作为Windows服务运行,则它很可能在以下系统帐户之一下运行:SYSTEM(最有可能),LOCAL SERVICE或NETW

  • 问题内容: 我正在尝试通过Java中的以下命令启动脚本: 在控制台中键入的命令可以正常工作。但是在这里,即使将路径添加到$ PATH变量中,也似乎找不到该脚本。如果将null传递为Environment,Java不会自动继承所有此类变量吗? 问题答案: 应该

  • 问题内容: 我想使用程序包执行Windows命令,但是Windows进行了一些奇怪的转义。 我有类似的东西: “SomeText” 但这会引发错误,因为Windows会将其转换为 有人知道为什么吗?如何使用exec程序包在Windows上执行? 谢谢! 问题答案: OK,这是一个比较复杂一点比你预期,但有 是 一个解决方案: 不幸的是,尽管在2011年添加了对此功能的支持,但它似乎尚未纳入文档中。

  • 问题内容: 我需要运行以下命令: 所以我执行: 它失败,并显示以下错误: 在命令行中执行命令时,命令起作用。为什么会发生这种情况?我该如何转义那些双引号以防止发生此错误? 问题答案: 当执行给定命令行时,shell将其解析为一组命令行参数,这些参数实际上是: shell解释的参数中的多余引号,而不是传递给基础程序。因此,当使用Go执行相同的程序时,直接在其中传递参数列表,则应省去那些多余的引号。

  • 我有一个命令,我需要在java中按照以下方式运行: 当路径没有空格时,这个命令可以正常工作,但是当我有空格时,我似乎无法让它工作。我尝试了以下方法,运行Java1.7 以及;以及 但两人似乎都没有采取任何行动。有没有想过我做错了什么??