gpt4 book ai didi

java - 无法使用 Java 进程执行参数包含 #(哈希)字符的 python 可执行文件

转载 作者:行者123 更新时间:2023-12-01 17:22:56 27 4
gpt4 key购买 nike

根据问题标题,无法成功执行以下命令。

更新:-当我从文件路径中删除 # 字符时,该命令可以正常工作。但这就是条件,我无法改变。

从 Java 执行的代码:

param = "install list \\\"-i /export/home/test/ABC#XYZ#TEST/test.rpm:-i /export/home/test/ABC#XYZ#TEST/test2.rpm\\\";

String commandToRunArr[]={"/bin/sh","-c", "/usr/local/bin/test.py" + " " + param};

process = Runtime.getRuntime().exec(commandToRunArr);

其他信息:

/usr/local/bin/test.py 是一个可执行文件。

我如何尝试通过修改运行命令来解决该问题:

第一个命令: /bin/sh -c/usr/local/bin/test.py install list\"-i/export/home/test/ABC#XYZ#TEST/test.rpm:-i/export/home/test/ABC#XYZ#TEST/test2.rpm\"

错误:错误:sh:-c:第 0 行:查找匹配的“”时出现意外的 EOF

错误:sh: -c: 第 1 行:语法错误:意外的文件结尾

返回代码1

第二个命令: /bin/sh -c --/usr/local/bin/test.py install list\"-i/export/home/test/ABC#XYZ #TEST/test.rpm:-i/export/home/test/ABC#XYZ#TEST/test2.rpm\"

错误:/bin/sh:-:选项无效

错误:用法:/bin/sh [GNU 长选项] [选项] ...

错误:/bin/sh [GNU 长选项] [选项] 脚本文件 ...

返回代码2

第三个命令: '/usr/local/bin/test.py setpriorityList "-i/export/home/test/ABC#XYZ#TEST/test.rpm:-我/export/home/test/ABC#XYZ#TEST/test2.rpm"'

错误:/bin/sh:-:选项无效

错误:用法:/bin/sh [GNU 长选项] [选项] ...

错误:/bin/sh [GNU 长选项] [选项] 脚本文件 ...

返回代码2

第四个命令: /usr/local/bin/test.py setpriorityList "-i/export/home/test/ABC#XYZ#TEST/test.rpm:-i/export/home/test/ABC#XYZ#TEST/test2.rpm"

错误:错误=2,没有这样的文件或目录

引起:java.io.IOException:错误=2,没有这样的文件或目录

返回代码-999

最佳答案

将 shell 移出循环。如果您的整个 param 字符串恰好是一个参数:

String commandToRunArr[]={"/usr/local/bin/test.py", param}
process = Runtime.getRuntime().exec(commandToRunArr);

如果它是多个参数,请将它们放入数组中,并按照您想要的方式精确划分(仅使用 Java 文字字符串语法,没有 shell 引号或 shell 转义)。以下是对您实际意图的一种猜测:

String commandToRunArr[]={
"/usr/local/bin/test.py",
"install", // sys.argv[1] in test.py
"list", // sys.argv[2] in test.py
// below string becomes sys.argv[3] in test.py
"-i /export/home/test/ABC#XYZ#TEST/test.rpm:-i /export/home/test/ABC#XYZ#TEST/test2.rpm"
}
process = Runtime.getRuntime().exec(commandToRunArr);

关于java - 无法使用 Java 进程执行参数包含 #(哈希)字符的 python 可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61258133/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com