[英]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.