java执行shell脚本 process.waitFor()返回1
记录一下今天遇到的一个问题
在java代码中执行shell脚本,部分代码如下
Process p = null;
List<String> cmds = new ArrayList<>();
cmds.add("cmd");
cmds.add("/c");
cmds.add(cmd);
ProcessBuilder pb = new ProcessBuilder(cmds);
p = pb.start();
//Future<String> errorFuture = executor.submit(new ReadTask(p.getErrorStream()));
//Future<String> resFuture = executor.submit(new ReadTask(p.getInputStream()));
int exitValue = p.waitFor();
if (exitValue > 0) {throw new RuntimeException(errorFuture.get());
}
脚本中执行了git commit操作
git add xxxx 2>/dev/null
git commit -am "$(date +%Y%m%d%H%M%S)"
问题的出现在于正常情况下exitValue=0时为正常,大于0则是发生了错误,脚本第一次执行时,由于有新的代码提交 所以commit操作返回的结果是0,而此时如果再执行commit操作,返回nothing to commit之类的东西,使用"$?"打印执行结果会发现返回的结果是1,于是就抛出了异常,这里可以在commit之前先执行diff命令判断一下,如果结果是空,表示没有新的可提交的代码,执行一下自定义操作就可以了,
java执行shell脚本 process.waitFor()返回1相关推荐
- 脚本运行显示服务器超时,java执行shell脚本超时
java执行shell脚本超时 [2021-02-11 04:20:34] 简介: 系统运维 在数据库运维的过程中,Shell 脚本在很大程度上为运维提供了极大的便利性.而shell 脚本参数作为变 ...
- java 调用linux 脚本并获取返回值
大家好,我是烤鸭: 今天分享下java 调用 shell脚本 并获取返回值. 代码实践 String cmd = "df -h"; StringBuffer sb = new St ...
- java无阻塞执行脚本,JAVA调用Shell脚本-及阻塞的解决方法
JAVA调用Shell脚本--及阻塞的解决办法 用java调用shell,使用 Process p=Runtime.getRuntime().exec(String[] cmd); Runtime.e ...
- java 调用casperjs_Java程序去调用并执行shell脚本及问题总结(推荐)
摘要: 该文章来自阿里巴巴技术协会(ATA)精选集 背景 我们在开发过程中,大部分是java开发, 而在文本处理过程中,主要就是脚本进行开发. java开发的特点就是我们可以很早地进行TDDL, ME ...
- java执行shell命令权限不够_Java调用shell脚本解决传参和权限问题的方法|chu
1. java 执行shell java 通过 Runtime.getRuntime().exec() 方法执行 shell 的命令或 脚本,exec()方法的参数可以是脚本的路径也可以是直接的 sh ...
- Java程序定时执行shell脚本
第一次写博客,写的不好还请见谅. 之前在Linux环境中想定期执行某个脚本,第一反应就是将这个task加入到crontab里(crontab的知识点这里就不具体介绍了),当然,这种做法一般情况下是可行 ...
- java 远程shell脚本_java通过ssh连接服务器执行shell命令详解及实例
java通过ssh连接服务器执行shell命令详解 java通过ssh连接服务器执行shell命令:JSch 是SSH2的一个纯Java实现.它允许你连接到一个sshd 服务器,使用端口转发,X11转 ...
- PHP执行Shell脚本或Bash脚本文件并返回命令输出详情
PHP执行shell脚本或者Bash脚本文件实例. system和exec函数可能被配置文件禁用,可以通过修改php配置文件删除被禁用的函数. 1.通过system函数执行 使用实例: <?ph ...
- java调用shell脚本并传递参数
最近业务上需要java调用执行shell脚本进行一些业务处理,写了个demo,记录下. 主要代码 @RequestMapping("/copy/database")@Respons ...
最新文章
- 如何安装rpm包?掌握rpm包管理工具就够了
- 5.1 HTML5表单的创建
- 深度学习 “四大名著” 发布!完整 PDF 开放下载!!!
- python3 用pygame 简单建一个飞船模型
- 翻译:理解TCP/IP网络栈编写网络应用(上)
- (原创)javascript进阶(三)
- 树莓派安装DLNA实现流媒体服务器
- 【胡学长 带你学 Global Mapper 】新手必看 入门指南
- Python制作一个简单的图片文字提取+PDF转WORD的软件
- CY5-N-羟基琥珀酰亚胺|cas146368-14-1|荧光量子产率
- 华为平行视界(应用内分屏)
- 42所一流大学研究生奖助学金汇总~
- 基于jquery的上拉加载更多
- Python自动化办公社区 · 最新教程
- EMQX 入门教程——导读
- OpenCV图像分割实战视频教程-贾志刚-专题视频课程
- python编写多人对战小游戏
- 编写一个 Linux 内核模块
- dhcp(dhcp服务异常)
- mysql 表名带下划线_在MySQL中可以使用下划线作为表名吗?