java调用shell获取返回值
转自:http://blog.csdn.net/tengdazhang770960436/article/details/12014839
1.shell文件return.sh
echo 1
echo 2
echo 3
2.java文件Test.java
- import java.io.BufferedInputStream;
- import java.io.BufferedReader;
- import java.io.InputStreamReader;
- public class Test {
- public static void main(String[] args) throws Exception {
- // 定义传入shell脚本的参数,将参数放入字符串数组里
- String cmds[] = new String[9];
- cmds[0] = "/home/aiuap_cj/report/return.sh";
- cmds[1] = "1"; // 任务省Id
- cmds[2] = "2";// 插入任务人所属的纳税主体标识
- cmds[3] = "3";// 任务期间
- cmds[4] = "4";// 统计表单类型 (1:计算表,2:申报表)
- cmds[5] = "5";// 插入任务人的二级公司Id
- cmds[6] = "6";// 表名
- cmds[7] = "7";
- cmds[8] = "8";// 库名
- // 执行shell脚本
- Process pcs = Runtime.getRuntime().exec(cmds);
- // 定义shell返回值
- String result = null;
- // 获取shell返回流
- BufferedInputStream in = new BufferedInputStream(pcs.getInputStream());
- // 字符流转换字节流
- BufferedReader br = new BufferedReader(new InputStreamReader(in));
- // 这里也可以输出文本日志
- String lineStr;
- while ((lineStr = br.readLine()) != null) {
- result = lineStr;
- }
- // 关闭输入流
- br.close();
- in.close();
- System.out.println("==============================" + result);
- }
- }
解释:
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获取返回值的更多相关文章
- [Python陷阱]os.system调用shell脚本获取返回值
当前有shell个脚本/tmp/test.sh,内容如下: #!/bin/bashexit 11 使用Python的os.system调用,获取返回值是: >>> ret=os.sy ...
- 工作随笔——Java调用Groovy类的方法、传递参数和获取返回值
接触Groovy也快一年了,一直在尝试怎么将Groovy引用到日常工作中来.最近在做一个功能的时候,花了点时间重新看了下Java怎么调用Groovy的方法.传递参数和获取返回值. 示例Groovy代码 ...
- Java程序调用带参数的shell脚本返回值
Java程序调用带参数的shell脚本返回值 首先来看看linux中shell变量(\(#,\)@,$0,$1,\(2)的含义解释 变量说明: - \)$ Shell本身的PID(ProcessI ...
- 【Shell学习笔记3》实践项目自动部署脚本】shell中获取返回值、获取当前sh文件路径
原创部分: 1.获取返回值 #This is a shell to Deploy Project #!/bin/bashcheck_results=`ps -ef | grep "java& ...
- JAVA中执行JavaScript代码并获取返回值
JAVA中执行JavaScript代码并获取返回值 场景描述 实现思路 技术要点 代码实现 测试方法 运行结果 改进空间 场景描述 今天在CSDN上偶然看到一个帖子对于一段字符串 “var p=‘xx ...
- Shell函数:Shell函数返回值、删除函数、在终端调用函数
函数可以让我们将一个复杂功能划分成若干模块,让程序结构更加清晰,代码重复利用率更高.像其他编程语言一样,Shell 也支持函数.Shell 函数必须先定义后使用. Shell 函数的定义格式如下: f ...
- Shell函数返回值、删除函数、在终端调用函数
Shell 也支持函数.Shell 函数必须先定义后使用. Shell 函数的定义格式如下: function_name () { list of commands [ return value ] ...
- Yii2.0调用sql server存储过程并获取返回值
1.首先展示创建sql server存储过程的语句,创建一个简单的存储过程,测试用. SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE P ...
- 自己遇到的ajax调用ashx文件无法获取返回值的一种情况
无法获取返回值的ashx文件大致如下: public void ProcessRequest (HttpContext context) { context.Response.ContentType ...
随机推荐
- Git对象模型
原文:http://gitbook.liuhui998.com/1_2.html 一.SHA 在git中,所有用来表示项目历史信息的文件,是通过一个40个字符的(40-digit)"对象名& ...
- Clone Graph
Clone an undirected graph. Each node in the graph contains a label and a list of its neighbors. OJ's ...
- poj 1442
一个排序的题目. 题意:给你m个数a[m],和n个数b[n]. 首先a[0]….a[b[0]]排序.输出第一个数. 然后a[0]….a[b[1]]排序.输出第二个数. 以此类推,直到输出第n个数. 思 ...
- spring mvc 重定向加传参
常用: ModelAndViewi: return new ModelAndView("redirect:/toList"); 或者 ii:return "redire ...
- [Linux]centOS7下RPM安装Perl
1.下载rpm依赖包,依照顺序安装. perl-parent-0.225-244.el7.noarch perl-HTTP-Tiny-0.033-3.el7.noarch perl-podla ...
- sql server 2008 不允许保存更改,您所做的更改要求删除并重新创建以下表 的解决办法
启动SQL Server 2008 Management Studio 工具菜单----选项----Designers(设计器)----阻止保存要求重新创建表的更改 取消勾选即可.
- 针对跑MySQL的Linux优化【转】
本文来自:http://www.mysqlsupport.cn/linux-performance-tuning-tips-mysql/ 因为很多MySQL的生产环境都在Linux下,我决定指出一些L ...
- [转][Android]FragmentPagerAdapter与FragmentStatePagerAdapter使用详解与区别
原文链接:http://blog.csdn.net/zhaokaiqiang1992 FragmentPagerAdapter是android-support-v4支持包里面出现的一个新的适配器,继承 ...
- 问题 A: 【动态规划】采药_二维数组_一维数组
问题 A: [动态规划]采药 时间限制: 1 Sec 内存限制: 64 MB提交: 35 解决: 15[提交][状态][讨论版] 题目描述 山洞里有一些不同的草药,采每一株都需要一些时间,每一株也 ...
- Match:DNA repair(POJ 3691)
基因修复 题目大意:给定一些坏串,再给你一个字符串,要你修复这个字符串(AGTC随便换),使之不含任何坏串,求修复所需要的最小步数. 这一题也是和之前的那个1625的思想是一样的,通过特殊的trie树 ...