【发布时间】:2019-01-19 06:46:11
【问题描述】:
我正在尝试使用带有以下代码的 java Process builder 执行 python 文件(远程)。
List<String> commands = new ArrayList<String>();
commands.add("/bin/sh");
commands.add("-c");
commands.add("\"python <(curl <remote python file>\"");
ProcessBuilder builder = new ProcessBuilder(commands);
builder.redirectErrorStream(true);
及其给予
/bin/sh: python
尝试使用命令插值(curl 和 python 命令前面的 $ 没有用双引号括起来)
commands.add("/bin/sh");
commands.add("-c");
commands.add("python <$(curl <remote python file>)");
这是在扔
不明确的重定向错误
【问题讨论】:
-
内插版本缺少右括号
-
我推测它正在尝试将“python ”作为单个命令执行(而不是将命令作为带参数的命令),我会分开并使用“” 作为单独的命令
-
我对右括号不好(它的复制/粘贴问题)
-
单独的命令意味着下载文件到本地然后运行python?恐怕在我的情况下这可能是不可能的。这是一个框架,用户提供一串命令,Java 代码执行它们(任何 shell 命令)
标签: java processbuilder