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

1.shell文件return.sh

echo 1

echo 2

echo 3

2.java文件Test.java

  1. import java.io.BufferedInputStream;
  2. import java.io.BufferedReader;
  3. import java.io.InputStreamReader;
  4. public class Test {
  5. public static void main(String[] args) throws Exception {
  6. // 定义传入shell脚本的参数,将参数放入字符串数组里
  7. String cmds[] = new String[9];
  8. cmds[0] = "/home/aiuap_cj/report/return.sh";
  9. cmds[1] = "1"; // 任务省Id
  10. cmds[2] = "2";// 插入任务人所属的纳税主体标识
  11. cmds[3] = "3";// 任务期间
  12. cmds[4] = "4";// 统计表单类型 (1:计算表,2:申报表)
  13. cmds[5] = "5";// 插入任务人的二级公司Id
  14. cmds[6] = "6";// 表名
  15. cmds[7] = "7";
  16. cmds[8] = "8";// 库名
  17. // 执行shell脚本
  18. Process pcs = Runtime.getRuntime().exec(cmds);
  19. // 定义shell返回值
  20. String result = null;
  21. // 获取shell返回流
  22. BufferedInputStream in = new BufferedInputStream(pcs.getInputStream());
  23. // 字符流转换字节流
  24. BufferedReader br = new BufferedReader(new InputStreamReader(in));
  25. // 这里也可以输出文本日志
  26. String lineStr;
  27. while ((lineStr = br.readLine()) != null) {
  28. result = lineStr;
  29. }
  30. // 关闭输入流
  31. br.close();
  32. in.close();
  33. System.out.println("==============================" + result);
  34. }
  35. }

解释:

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获取返回值的更多相关文章

  1. [Python陷阱]os.system调用shell脚本获取返回值

    当前有shell个脚本/tmp/test.sh,内容如下: #!/bin/bashexit 11 使用Python的os.system调用,获取返回值是: >>> ret=os.sy ...

  2. 工作随笔——Java调用Groovy类的方法、传递参数和获取返回值

    接触Groovy也快一年了,一直在尝试怎么将Groovy引用到日常工作中来.最近在做一个功能的时候,花了点时间重新看了下Java怎么调用Groovy的方法.传递参数和获取返回值. 示例Groovy代码 ...

  3. Java程序调用带参数的shell脚本返回值

    Java程序调用带参数的shell脚本返回值 首先来看看linux中shell变量(\(#,\)@,$0,$1,\(2)的含义解释 变量说明: -  \)$  Shell本身的PID(ProcessI ...

  4. 【Shell学习笔记3》实践项目自动部署脚本】shell中获取返回值、获取当前sh文件路径

    原创部分: 1.获取返回值 #This is a shell to Deploy Project #!/bin/bashcheck_results=`ps -ef | grep "java& ...

  5. JAVA中执行JavaScript代码并获取返回值

    JAVA中执行JavaScript代码并获取返回值 场景描述 实现思路 技术要点 代码实现 测试方法 运行结果 改进空间 场景描述 今天在CSDN上偶然看到一个帖子对于一段字符串 “var p=‘xx ...

  6. Shell函数:Shell函数返回值、删除函数、在终端调用函数

    函数可以让我们将一个复杂功能划分成若干模块,让程序结构更加清晰,代码重复利用率更高.像其他编程语言一样,Shell 也支持函数.Shell 函数必须先定义后使用. Shell 函数的定义格式如下: f ...

  7. Shell函数返回值、删除函数、在终端调用函数

    Shell 也支持函数.Shell 函数必须先定义后使用. Shell 函数的定义格式如下: function_name () { list of commands [ return value ] ...

  8. Yii2.0调用sql server存储过程并获取返回值

    1.首先展示创建sql server存储过程的语句,创建一个简单的存储过程,测试用. SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE P ...

  9. 自己遇到的ajax调用ashx文件无法获取返回值的一种情况

    无法获取返回值的ashx文件大致如下: public void ProcessRequest (HttpContext context) { context.Response.ContentType ...

随机推荐

  1. AutoMapper Getting started

    AutoMapper 是什么? 为什么要用AutoMapper? 如何使用AutoMapper? 在什么地方配置AutoMapper? 如何测试my mappings? AutoMapper 是什么? ...

  2. jQuery数组($.each,$.grep,$.map,$.merge,$.inArray,$.unique,$.makeArray)处理函数详解

    1. $.each(array, [callback]) 遍历[常用] 解释: 不同于例遍jQuery对象的$().each()方法,此方法可用于例遍任何对象.回调函数拥有两个参数:第一个为对象的成员 ...

  3. centos7精简版(minimal)killall: command not found

    centos7精简版(minimal)运行killall命令提示 command not found 是由于没有安装psmisc所致 Psmisc软件包包含三个帮助管理/proc目录的程序. 安装下列 ...

  4. SQL Server 2005中的分区表

    记录笔记: 转自 猪八戒学做网站 SQL Server 2005中的分区表(一):什么是分区表?为什么要用分区表?如何创建分区表? SQL Server 2005中的分区表(二):如何添加.查询.修改 ...

  5. JDK1.7 中的HashMap源码分析

    一.源码地址: 源码地址:http://docs.oracle.com/javase/7/docs/api/ 二.数据结构 JDK1.7中采用数组+链表的形式,HashMap是一个Entry<K ...

  6. Divide and conquer:Showstopper(POJ 3484)

    Showstopper 题目大意:数据挖掘是一项很困难的事情,现在要你在一大堆数据中找出某个数重复奇数次的数(有且仅有一个),而且要你找出重复的次数. 其实我一开始是没读懂题意的...主要是我理解错o ...

  7. codeforces 500A. New Year Transportation

    题目链接:http://codeforces.com/problemset/problem/500/A 题目意思:给出 n-1 个 cell,每个 cell 有一个值 ai,表示在这个编号为 i 的 ...

  8. Maven实现直接部署Web项目到Tomcat7(转)

    转载自:http://my.oschina.net/angel243/blog/178554 以前在项目中很少使用Maven,最近自己学习了一下maven,真的是非常强大的项目构建工具,对于依赖包的定 ...

  9. 【leetcode】Permutations (middle)

    Given a collection of numbers, return all possible permutations. For example,[1,2,3] have the follow ...

  10. HDU 4950 Monster

    题目链接 题意:有一个怪物的血量为h,人攻击怪物,每回合可以杀掉a滴血,再回b滴血,k个回合之后人会休息一回合,即人不攻击而怪物回b滴血,问能否杀死.翻译过来就是给定一个数h,每轮可以先减a再加b,k ...