我正在尝试使用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
            );

08-18 15:42
查看更多