2015-12-14 72 views
0

我正在使用apache-commons-exec在Java應用程序中執行一些命令。用分號執行apache-commons-exec多個命令

當我執行'ls -la/home/user'時,它工作的很好。

但我需要這樣的

./setEnvsOfTypeXXX.sh; ./setEnvsOfTypeYYY.sh; ls -la /home/user 

我輸入命令進入命令行執行對象的東西,這是行不通的。

它返回一個空字符串和-559038737退出代碼。

因爲環境的性質和腳本(第一個設置了一些需要的環境變量);我不能把所有的呼叫到一個腳本Ø 我已經嘗試了許多解決方案(如全部包圍中包含「「」或使用PumStreamHandlet輸入流引號的命令),但至今沒有奏效...

任何人有想法?

回答

0

嘗試

sh -c '. ./setEnvsOfTypeXXX.sh; . ./setEnvsOfTypeYYY.sh; ls -la /home/user' 

當你的命令

兩件事情我猜你需要在這裏。

首先,如果你正在設置你可能需要使用的環境變量。 其次要運行一個shell,並得到shell來執行的是shell腳本,然後運行下面的命令,都在同樣的背景下

+0

好吧,我正在檢查這個.... – user898384

+0

它適合你嗎?你能否更新答案?您也可以嘗試使用&& –

-1

我想這個代碼

cmdLine = new CommandLine("/bin/bash"); 
cmdLine.addArgument("-c"); 
cmdLine.addArgument(new StringBuilder().append("'").append(command).append("'").toString()); 

甚至與command = "ls";

存在錯誤

bash: ls: No such file or directory 

有趣的事實:在Windows這個工程確定!

 cmdLine = new CommandLine("cmd.exe"); 
     cmdLine.addArgument("/c"); 
     cmdLine.addArgument(new StringBuilder().append("\"").append(command).append("\"").toString()); 
     logger.info("Command win line: cmd.exe /c \""+command + "\""); 

我完全沒有選擇了!

+0

連接命令嗨!歡迎來到StackOverflow,當然,當你回答一個問題時,你實際上是在回答問題。 StackOverflow與論壇不同:http://stackoverflow.com/help/how-to-answer –

-1

我有一個workarround:使用以下命令創建一個時間SH文件,把家當上firts線,並給予權限,執行一個命令行中這個文件,得到結果和輸出,爲去年刪除中的臨時文件...

它的工作原理!