簡體   English   中英

Java ProcessBuilder和bash

[英]Java ProcessBuilder and bash

我試圖用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
            );

這是我在processBuilder中使用的:

String[] command = new String[] {"echo", "Hello"};
String workspace = "/bin/su";
System.out.println("Trying to run command: "+ Arrays.toString(command));
ProcessBuilder probuilder = new ProcessBuilder(command);
probuilder.directory(new File(workspace));

Process process = probuilder.start();
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
System.out.printf("Output of running %s is:\n",Arrays.toString(command));
while ((line = br.readLine()) != null) {
    System.out.println(line);
}

我希望它有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM