我知道我們可以在java程序中運行linux終端命令,如下面的代碼顯示主目錄的「ls」命令。從java程序運行linux命令txl
String[] cmd1 = {
"/bin/sh",
"-c",
"cd ../.. && ls"};
Process child1 = Runtime.getRuntime().exec(cmd1);
child1.waitFor();
final BufferedReader is = new BufferedReader(new InputStreamReader(child1.getInputStream()));
String line;
while ((line = is.readLine()) != null) {
System.out.println("output is: "+line);
}
但我不知道「/ bin/sh」和「-c」是什麼意思?我在網上搜索它,有人使用「bash」或其他。如果我只運行命令「cd ../ .. & & ls」,我會得到相同的結果。
所以,如果在終端爲「通心絡-o輸出INPUTFILE」,其中「通心絡」已安裝的工具命令,如何寫在java嗎?我試過
String[] cmd1 = {
"/bin/sh",
"-c",
"cd ../.. && txl -o output inputFile"};
但是無法得到結果。我添加「cd ../ ..」首先從工作空間進入主目錄,因爲txl安裝在主目錄bin目錄中。
任何人都可以給我一些建議嗎?
編輯:
我這種格式的作品犯了一個愚蠢的拼寫錯誤,命令!
我個人會避免直接使用'Runtime.exec',而是使用'ProcessBuilder'。話雖如此,你應該拆分你的cmd數組,以便每個元素代表一個單獨的參數,這個參數將被髮送到你正在執行的命令中。你的例子會提示'cd ../ .. && ls'會作爲你正在執行的命令的單個參數出現,這不是你想要的 – MadProgrammer
謝謝,madprogrammer。如果是這樣,寫入cmd1'String [] cmd1 = {「/ bin/sh」, 「-c」,「cd ../ ..」,「txl -o output inputFile」}或' String [] cmd1 = {「cd ../ ..」,「txl -o output inputFile」}'?或者你能告訴我如何編寫cmd1?謝謝! @MadProgrammer – Eve
我會建議更類似'{「/ bin/sh」,「-c」,「cd」,「../ ..」,「&&」,「txl」,「-o」,「output 「,」inputFile「}'但你可能需要試驗它 – MadProgrammer