zoukankan      html  css  js  c++  java
  • java调用shell获取返回值

    转自: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 $?

  • 相关阅读:
    SQLServer之ISO游标使用
    Eclipse Android 代码自动提示功能
    Java中利用MessageFormat对象实现类似C# string.Format方法格式化
    Eclipse的常用快捷键、旁门左道、系统错误小贴士
    Eclipse配置详解(包括智能提示设置、智能提示插件修改,修改空格自动上屏、JDK配置、各种快捷键列表……)
    Unity3D DF根据名称获取多个子控件代码
    unity3d asset store下载的代码所在位置
    Unity3D Update() 和 FixedUpdate()区别
    Unity3D的断点调试功能
    Error building Player: UnityException: Bundle Identifier has not been set up correctly
  • 原文地址:https://www.cnblogs.com/x_wukong/p/5359895.html
Copyright © 2011-2022 走看看