簡體   English   中英

從java程序運行系統命令時遇到問題:

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

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