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

将参数从Java程序传递到bash脚本,该bash脚本使用参数调用另一个Java程序

楚乐逸
2023-03-14
问题内容

我想在我的Java程序中执行shell脚本,并传递如下所示的参数:

Runtime.getRuntime().exec("./test.sh " + "\\\"param1\\\"\\\"param2\\\"\\\"param3\\\"");

然后test.sh将调用另一个传递字符串参数的java程序,如下所示:

another.jar \"param1\"\"param2\"\"param3\"

最后程序anther.jar将以这种格式解释参数

another.jar "param1""param2""param3"

我对此感到有些困惑,因为在这种情况下我无法正确处理转义字符。

我在第一个命令中尝试了一些字符串格式,但没有获得正确的格式。

一些帮助就可以了!

谢谢!


问题答案:

我认为您最好使用 exec(String []
cmdarray)

而不是 exec(String
cmd)

。这是因为 exec(String
cmd)

通过
StringTokenizer
标记了参数,而在分解命令行参数时根本不注意双引号。

尝试这样的事情:

ArrayList<String> argList = new ArrayList<String>();
argList.add("param1");
argList.add("param2");
argList.add("param2");
String[] args = argList.toArray(new String[argList.size()]);
Runtime.getRuntime().exec("mycommand", args);

除了Java源代码字符串文字可能需要转义外,param值内的字符不需要引号或转义。



 类似资料:
  • 问题内容: 我知道我可以使用以下命令从bash脚本运行python脚本: 但是,如果我想将变量/自变量从bash脚本传递到python脚本,该怎么办?我怎样才能做到这一点? 基本上,bash会计算出文件名,然后python将其上传,但是当我调用它时,我需要将文件名从bash发送到python。 问题答案: 要在bash脚本中执行python脚本,您需要调用与终端相同的命令。例如 要在python中

  • 问题内容: 我有一个Linux bash脚本“ myshell”。我希望它读取两个日期作为参数,例如:。我是Java程序员,但不知道如何编写脚本来完成此任务。 脚本的其余部分如下所示: 问题答案: 您在脚本中使用,例如

  • 如果不满足所需的参数计数,我希望我的Bash脚本打印一条错误消息。 由于某种未知的原因,我出现了以下错误: 我做错了什么?

  • 问题内容: 我正在尝试制作应该像这样使用的shell脚本: 然后,脚本将ocr将图像文件转换为文本文件。到目前为止,这是我想出的: 但是我不知道如何获得和价值观。关于如何做的任何想法? 问题答案: 您提供给bashscript的参数将出现在变量中,并且数字代表该参数。是命令本身。 参数由空格分隔,因此,如果在命令中提供和,它们也将以这些变量结尾,因此: 你会得到: 省略和可能更容易,例如: 然后您

  • 我想测试传递给Linux外壳脚本的参数数量,如果参数数量不是或,它应该打印一些东西,不幸的是它不起作用,有人能解释一下我做错了什么吗?

  • 当用作npm脚本参数时,是否可以调用从yargs检索密钥? OSX终端中的用户类型: 执行package.json: 这导致了 只有在package.json中硬编码时,这才有效,但我需要它是可配置的。 正如我所说的,我使用的是args,因为它似乎可以很容易地按名称检索键(与数组相反)。接受建议。 我错过了什么? 更新11-07-2017相关:发送命令行参数到npm脚本 但是,传入命令行OR会产生