簡體   English   中英

如何從Java調用帶有標志/開關的Shell腳本

[英]How to invoke a shell script with flags/switches from java

我有一個shell腳本,例如testDB.sh,它以開關/標志的形式占用憑據(參數)。 例如,要執行此腳本,請執行以下操作

./testDB.sh -u用戶名-p密碼。

為了從Java調用它,我遵循傳統方法。

Runtime.getRuntime().exec(new String[] {"bash","/<path to test script>/testDB.sh","<username>","<password>"});

上面似乎沒有幫助的原因:(

我想知道如何通過以Java中標志/開關的形式傳遞參數來調用此腳本。 我如何通過-u和-v開關? 任何幫助,將不勝感激

您還需要傳遞標志:

new ProcessBuilder("<script path>/testDB.sh",
  "-u", username,
  "-p", password
);

我強烈建議不要使用其他任何解決方案,因為它們很脆弱,並且在腳本的任何參數中都留有空格時,它們會突然失敗。

如果密碼和用戶名都存儲在變量中,我建議您嘗試:

Runtime.getRuntime().exec("<script path>/testDB.sh -u " + username + " -p " + password);

這不是您目前擁有的擴展。 您目前有...

Runtime.getRuntime().exec(new String[] {"bash","/<path to test script>/testDB.sh","<username>","<password>"});

更新到

String command = String.format( "/<path to test script>/testDB.sh -u %s -p %s", username, password );
String[] cmdAndArgs = { "/bin/bash", "-c", command };

Runtime.getRuntime().exec( cmdAndArgs );

暫無
暫無

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

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