更新時間:2022-08-01 11:36:12 來源:動力節點 瀏覽6860次
動力節點小編來告訴大家Java執行shell腳本的方法。如果你有一個 shell 腳本,比如 test.sh,那么你可以使用 RunTime 類或 ProcessBuilder 從 Java 程序運行它(注意 ProcessBuilder 是在 Java 5 中添加的)。
使用 Runtime.getRunTime().exec 執行 shell 腳本
導入 java.io.BufferedReader;
導入 java.io.IOException;
導入 java.io.InputStreamReader;
公共類 RunningSS {
公共靜態無效主要(字符串[]參數){
進程 p;
嘗試 {
String[] cmd = { "sh", "/home/adb/Documents/test.sh"};
p = Runtime.getRuntime().exec(cmd);
p.waitFor();
BufferedReader reader=new BufferedReader(new InputStreamReader(
p.getInputStream()));
字符串線;
while((line = reader.readLine()) != null) {
System.out.println(line);
}
} 捕捉(IOException e){
// TODO 自動生成的 catch 塊
e.printStackTrace();
} 捕捉(InterruptedException e){
// TODO 自動生成的 catch 塊
e.printStackTrace();
}
}
}
使用給定的 shell 腳本執行此 Java 程序后,如果您在 Java 程序所在的位置進行驗證,您將看到在該目錄中創建了一個目錄 test 和一個文件 SAMPLE。
Runtime.getRuntime().exec方法用于運行命令。
public static Runtime getRuntime() - 返回與當前 Java 應用程序關聯的運行時對象。
public Process exec(String command) throws IOException - 在單獨的進程中執行指定的字符串命令。
與命令一起使用的cmd /c具有以下解釋 -
cmd - 啟動一個新的命令外殼
/c - 執行給定的命令并終止
該命令的執行返回類 Process 的實例。使用 Process 類的getInputStream()方法,可以通過讀取流來打印執行命令的輸出。
如果您必須使用 ProcessBuilder 運行與上述相同的命令,這是一種更清晰的方法,您可以創建一個包含命令和所需參數的列表,然后將其作為命令傳遞給 ProcessBuilder 實例。
導入 java.io.BufferedReader;爪哇_ 伊奧。緩沖讀取器;
導入 java.io.IOException;導入java 。伊奧。異常;
導入 java.io.InputStreamReader;導入java 。伊奧。輸入流讀取器;
導入 java.util.ArrayList;導入java 。實用程序。數組列表;
導入 java.util.List;導入java 。實用程序。列表;
公共類 RunningSS {公共類RunningSS {
公共靜態無效主要(字符串[]參數){公共靜態無效主要(字符串[]參數){
進程 p;進程p ;
嘗試 { 試試{
List<String> cmdList = new ArrayList<String>();列表<字符串> cmdList = new ArrayList <字符串>();
// 將命令和參數添加到列表中// 將命令和參數添加到列表中
cmdList.add("sh");. 添加(“sh” );
cmdList.add("/home/adb/Documents/test.sh");. 添加(“/home/adb/Documents/test.sh” );
ProcessBuilder pb = new ProcessBuilder(cmdList);ProcessBuilder pb = new ProcessBuilder ( cmdList );
p = pb.start();=鉛。開始();
p.waitFor();. 等待();
BufferedReader reader=new BufferedReader(new InputStreamReader(BufferedReader reader = new BufferedReader ( new InputStreamReader (
p.getInputStream()));. 獲取輸入流()));
字符串線;字符串線;
while((line = reader.readLine()) != null) {while (( line = reader . readLine ()) != null ) {
System.out.println(line);系統。出來。println (行);
}}
} 捕捉(IOException e){}捕捉(IOException e ){
// TODO 自動生成的 catch 塊// TODO 自動生成的 catch 塊
e.printStackTrace();. 打印堆棧跟蹤();
} 捕捉(InterruptedException e){}捕捉(InterruptedException e ){
// TODO 自動生成的 catch 塊// TODO 自動生成的 catch 塊
e.printStackTrace();. 打印堆棧跟蹤();
}}
}}
}}
以上就是關于“Java執行shell腳本的方法”,如果大家對此比較感興趣,可以關注一下動力節點的Java在線學習,里面的課程內容細致全面,很適合沒有基礎的小伙伴學習,希望對大家能夠有所幫助。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習