簡體   English   中英

從Java代碼運行Shell腳本並傳遞參數

[英]Running shell script from java code and pass arguments

我正在從Java程序執行Shell腳本。 我已經使用Runtime類實現了它。 下面是我實現的代碼

final StringBuilder sb = new StringBuilder("test.sh");
sb.append("/path to/my/text file");

final Process p = Runtime.getRuntime().exec(sb.toString());

這里sb是字符串緩沖區對象,我在其中附加我的參數並在exec方法中使用它。 但是問題在於我傳遞的參數“ / path to / my / text file”被認為是4個參數

/path
 to
/my/text
 file

但是,如果在shell中作為test.sh“ // my / text文件的路徑”運行,則將其作為單個參數。 我如何使用Java代碼來實現相同的目的,在這里我需要將此路徑以空格作為單個參數。 任何請一定會很感激。

使用ProcessBuilder ,它的目的是使您的生活更輕松

ProcessBuilder pb = new ProcessBuilder("test.sh", "/path", "/my/text file");
Process p = pb.start();

用這個:

final StringBuilder sb = new StringBuilder("test.sh");
sb.append(" \"/path to/my/text file\"");

要重新創建您在shell中手動運行的命令test.sh "/path to/my/text file" ,您需要包括引號。

final StringBuilder sb = new StringBuilder("test.sh");
sb.append(" \"/path to/my/text file\""); //notice escaped quotes
final Process p = Runtime.getRuntime().exec(sb.toString());

您的方法是正確的,您只需要在參數前添加一個space (" ")並轉義參數中的"/" and " "字符

暫無
暫無

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

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