java調用shell擷取傳回值

來源:互聯網
上載者:User

標籤:

轉自:http://blog.csdn.net/tengdazhang770960436/article/details/12014839

 

1.shell檔案return.sh

 

echo 1

echo 2

echo 3

 

2.java檔案Test.java

 

[java] view plain copy 
  1. import java.io.BufferedInputStream;  
  2. import java.io.BufferedReader;  
  3. import java.io.InputStreamReader;  
  4.   
  5. public class Test {  
  6.     public static void main(String[] args) throws Exception {  
  7.         // 定義傳入shell指令碼的參數,將參數放入字串數組裡  
  8.         String cmds[] = new String[9];  
  9.         cmds[0] = "/home/aiuap_cj/report/return.sh";  
  10.         cmds[1] = "1"; // 任務省Id  
  11.         cmds[2] = "2";// 插入任務人所屬的納稅主體標識  
  12.         cmds[3] = "3";// 任務期間  
  13.         cmds[4] = "4";// 統計表單類型 (1:計算表,2:申報表)  
  14.         cmds[5] = "5";// 插入任務人的二級公司Id  
  15.         cmds[6] = "6";// 表名  
  16.         cmds[7] = "7";  
  17.         cmds[8] = "8";// 庫名  
  18.   
  19.         // 執行shell指令碼  
  20.         Process pcs = Runtime.getRuntime().exec(cmds);  
  21.   
  22.         // 定義shell傳回值  
  23.         String result = null;  
  24.   
  25.         // 擷取shell返迴流  
  26.         BufferedInputStream in = new BufferedInputStream(pcs.getInputStream());  
  27.         // 字元流轉換位元組流  
  28.         BufferedReader br = new BufferedReader(new InputStreamReader(in));  
  29.         // 這裡也可以輸出文本日誌  
  30.   
  31.         String lineStr;  
  32.         while ((lineStr = br.readLine()) != null) {  
  33.             result = lineStr;  
  34.         }  
  35.         // 關閉輸入資料流  
  36.         br.close();  
  37.         in.close();  
  38.   
  39.         System.out.println("==============================" + result);  
  40.   
  41.     }  
  42.   
  43. }  


解釋:

 

shell返回給java的值是通過echo完成的,java擷取到的shell傳回值是最後的echo值,所以上面的java所能擷取到的值就是3。

如果:你想把指令碼執行的過程中錯誤給記錄下來,那麼可以把return.sh修改如下:

 

echo 1

echo 2

echo 3

rm -r /8888.txt 2>error.log

這裡有一點問題在於你無法把命令執行過程中的錯誤資訊給直接返回到java調用端,這個時候你可以把命令執行結果返回給java調用端,然後把產生的錯誤記錄檔寫入到制定檔案中,之後通過讀取記錄檔來查看錯誤資訊。

echo 1
echo 2
echo 3

rm -r /8888.txt 2>error.log

echo $?

java調用shell擷取傳回值

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.