我正在從Java程序執行一個shell腳本。我已經使用運行時類實現了它。下面是我實現的代碼從java代碼運行shell腳本並傳遞參數
final StringBuilder sb = new StringBuilder("test.sh");
sb.append("/path to/my/text file");
final Process p = Runtime.getRuntime().exec(sb.toString());
這裏sb是字符串緩衝區對象,我追加我的參數並在exec方法中使用它。但問題是我通過參數「/路徑/我/文本文件」被認爲是4個參數
/path
to
/my/text
file
但是,如果在運行shell作爲test.sh「/路徑/我/文本文件」,這被視爲單一參數。我如何使用Java代碼實現相同的功能,我需要將空間視爲單一參數來考慮此路徑。任何請求都會非常可觀。
爲什麼有2個參數「/ path」和「/ my/text file」?不應該是新的ProcessBuilder(「test.sh」,「/ path to/my/text file」) – Mojoy
不,每個參數必須是分開的,否則它們將作爲單個參數發送到進程,這就是爲什麼最後一個參數不需要在引號中轉義 – MadProgrammer