记录一下今天遇到的一个问题
在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相关推荐

  1. 脚本运行显示服务器超时,java执行shell脚本超时

    java执行shell脚本超时 [2021-02-11 04:20:34]  简介: 系统运维 在数据库运维的过程中,Shell 脚本在很大程度上为运维提供了极大的便利性.而shell 脚本参数作为变 ...

  2. java 调用linux 脚本并获取返回值

    大家好,我是烤鸭: 今天分享下java 调用 shell脚本 并获取返回值. 代码实践 String cmd = "df -h"; StringBuffer sb = new St ...

  3. java无阻塞执行脚本,JAVA调用Shell脚本-及阻塞的解决方法

    JAVA调用Shell脚本--及阻塞的解决办法 用java调用shell,使用 Process p=Runtime.getRuntime().exec(String[] cmd); Runtime.e ...

  4. java 调用casperjs_Java程序去调用并执行shell脚本及问题总结(推荐)

    摘要: 该文章来自阿里巴巴技术协会(ATA)精选集 背景 我们在开发过程中,大部分是java开发, 而在文本处理过程中,主要就是脚本进行开发. java开发的特点就是我们可以很早地进行TDDL, ME ...

  5. java执行shell命令权限不够_Java调用shell脚本解决传参和权限问题的方法|chu

    1. java 执行shell java 通过 Runtime.getRuntime().exec() 方法执行 shell 的命令或 脚本,exec()方法的参数可以是脚本的路径也可以是直接的 sh ...

  6. Java程序定时执行shell脚本

    第一次写博客,写的不好还请见谅. 之前在Linux环境中想定期执行某个脚本,第一反应就是将这个task加入到crontab里(crontab的知识点这里就不具体介绍了),当然,这种做法一般情况下是可行 ...

  7. java 远程shell脚本_java通过ssh连接服务器执行shell命令详解及实例

    java通过ssh连接服务器执行shell命令详解 java通过ssh连接服务器执行shell命令:JSch 是SSH2的一个纯Java实现.它允许你连接到一个sshd 服务器,使用端口转发,X11转 ...

  8. PHP执行Shell脚本或Bash脚本文件并返回命令输出详情

    PHP执行shell脚本或者Bash脚本文件实例. system和exec函数可能被配置文件禁用,可以通过修改php配置文件删除被禁用的函数. 1.通过system函数执行 使用实例: <?ph ...

  9. java调用shell脚本并传递参数

    最近业务上需要java调用执行shell脚本进行一些业务处理,写了个demo,记录下. 主要代码 @RequestMapping("/copy/database")@Respons ...

最新文章

  1. 如何安装rpm包?掌握rpm包管理工具就够了
  2. 5.1 HTML5表单的创建
  3. 深度学习 “四大名著” 发布!完整 PDF 开放下载!!!
  4. python3 用pygame 简单建一个飞船模型
  5. 翻译:理解TCP/IP网络栈编写网络应用(上)
  6. (原创)javascript进阶(三)
  7. 树莓派安装DLNA实现流媒体服务器
  8. 【胡学长 带你学 Global Mapper 】新手必看 入门指南
  9. Python制作一个简单的图片文字提取+PDF转WORD的软件
  10. CY5-N-羟基琥珀酰亚胺|cas146368-14-1|荧光量子产率
  11. 华为平行视界(应用内分屏)
  12. 42所一流大学研究生奖助学金汇总~
  13. 基于jquery的上拉加载更多
  14. Python自动化办公社区 · 最新教程
  15. EMQX 入门教程——导读
  16. OpenCV图像分割实战视频教程-贾志刚-专题视频课程
  17. python编写多人对战小游戏
  18. 编写一个 Linux 内核模块
  19. dhcp(dhcp服务异常)
  20. mysql 表名带下划线_在MySQL中可以使用下划线作为表名吗?

热门文章

  1. TCP timewait和closewait?2MSL?
  2. LTE:Buffer Status Report(BSR)
  3. Postgresql 安装system_stats 插件做监控
  4. Visio 2003 图形剪切合并 高级技巧
  5. ClientID的用法
  6. 面试新东方,java集合框架把我问懵了
  7. CH900无线电监测接收机综合指标参数
  8. 大数据分析系统包括哪些方面
  9. 用C语言实现发红包的软件算法
  10. 破事精英2◎爬向未来