Passing arguments form java program to bash script that call another java programa with the arguments(将参数从 java 程序传递到 bash 脚本,该脚本使用参数调用另一个 java 程序)
问题描述
我想在我的 java 程序中执行一个 shell 脚本,并传递如下所示的参数:
I want to executing a shell scripting in my java program passing a argument showed bellow:
Runtime.getRuntime().exec("./test.sh " + "\"param1\"\"param2\"\"param3\"");
test.sh 将调用另一个传递字符串参数的 java 程序,如下所示:
And the test.sh will call another java program passing the string argument like this:
another.jar "param1""param2""param3"
最后 anther.jar 程序会以这种格式解释参数
and finally the program anther.jar will interpret the argument in this format
another.jar "param1""param2""param3"
我对此有点困惑,因为在这种情况下我无法正确处理转义字符..kkk
I'm a bit confuse with this bacause I can't deal correctly with escapes characters in this situation..kkk
我在第一个命令中尝试了一些字符串格式,但没有得到正确的格式.
I tried some strings formats in the first command but I didn't get the correct form.
一些帮助会很好!
谢谢!
推荐答案
我认为你最好使用 exec(String[] cmdarray) 而不是 执行(字符串 cmd).这是因为 exec(String cmd) 通过 StringTokenizer,在拆分命令行参数时根本不注意双引号.
I think you would be better off using exec(String[] cmdarray) instead of exec(String cmd). This is because exec(String cmd) tokenizes the arguments via StringTokenizer, which pays no attention at all to double quotes when breaking up the command line arguments.
试试这样的:
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 源代码字符串文字可能需要转义.
Characters inside the param values should not need quoting or escaping, except insofar as Java source code string literals may require escaping.
这篇关于将参数从 java 程序传递到 bash 脚本,该脚本使用参数调用另一个 java 程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:将参数从 java 程序传递到 bash 脚本,该脚本使用参数调用另一个 java 程序
基础教程推荐
- 在 Libgdx 中处理屏幕的正确方法 2022-01-01
- 减少 JVM 暂停时间 >1 秒使用 UseConcMarkSweepGC 2022-01-01
- 无法使用修饰符“public final"访问 java.util.Ha 2022-01-01
- 降序排序:Java Map 2022-01-01
- 如何使用 Java 创建 X509 证书? 2022-01-01
- Java:带有char数组的println给出乱码 2022-01-01
- 设置 bean 时出现 Nullpointerexception 2022-01-01
- Java Keytool 导入证书后出错,"keytool error: java.io.FileNotFoundException &拒绝访问" 2022-01-01
- FirebaseListAdapter 不推送聊天应用程序的单个项目 - Firebase-Ui 3.1 2022-01-01
- “未找到匹配项"使用 matcher 的 group 方法时 2022-01-01