Java ProcessBuilder 和 bash

标签 java bash processbuilder

我正在尝试使用 ProcessBuilder 从 Java 执行 bash 脚本 我的代码是:

 Process createUser = buildProcess(
            "/bin/su",
            "-c",
            "\"/opt/somedir/testdir/current/bin/psql",
            "--command",
            commandForUserCreation,
            /* "'select * from users'", */
            "--dbname",
            "mydbname\"",
            "myuser"
            );

问题是我收到错误:

 /bin/su: unrecognized option '--dbname'

如果我将 echo 放在命令的第一位,它会在 bash 中打印正确的命令,如果我复制/粘贴此命令,它会起作用!

请帮我解决这个问题。

最佳答案

您需要提供要由 su 作为单个参数执行的整个命令。试试这个:

 Process createUser = buildProcess(
            "/bin/su",
            "-c",
            "/opt/vmware/vpostgres/current/bin/psql --command " + commandForUserCreation + " --dbname mydbname",
            myuser
            );

关于Java ProcessBuilder 和 bash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21525705/

相关文章:

java - 可写收集问题

java - 多维数组和高级 for 循环

r - Linux集群、Rmpi和进程数

java - 共享进程/线程

java - 从不同目录启动应用程序(.jar 文件)时如何获取位于类路径中的绝对文件路径?

java - 在 OSGi 中,我的权限在主线程中被拒绝,但在 EDT 线程中允许

java - 接口(interface)中方法的通用返回类型

linux - 什么时候用引号括起 shell 变量?

bash - 在 MQTT 消息上运行进程

JavaFX : Redirect Input/Output/Error From ProcessBuilder to TextArea?