[英]Having problems running system commands from a java program:
這只給出了ls
的輸出:
String[] cmd={"bash","-c","ls","-l"}:
ProcessBuilder pb=new ProcessBuilder(cmd);
這樣可以正確地提供長列表輸出:
String[] cmd={"bash","-c","ls -l"};
在第一個代碼片段中, -l
選項作為參數傳遞給bash,而不是傳遞給ls。 Bash將-l
選項解釋為指定它應該表現為“登錄”shell。
-c
之后的參數應該包含您要執行的整個bash腳本(包括空格),因此第二個代碼段是正確的。
前者將兩個選項標志傳遞給bash
: -c
帶有參數ls
, -l
根據聯機幫助頁導致bash
充當登錄shell。
第二個傳遞一個選項標志-c
,其中參數ls -l
為單個字符串。
String[] cmd={"bash","-c","ls -l"}:
ProcessBuilder pb=new ProcessBuilder(cmd);
爭論是打擊,所以如果你想要bash通過“bash”,“ - c”,......來填充你的“命令”,那么下一個項目需要是你的整個命令,也就是“ls -l”。
Bash然后解析“命令”,-l將作為參數發送到“ls”。 目前它是“bash”的參數,這就是為什么你沒有得到你想要的結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.