200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > java执行shell脚本 process.waitFor()返回1

java执行shell脚本 process.waitFor()返回1

时间:2021-01-22 23:57:37

相关推荐

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/nullgit commit -am "$(date +%Y%m%d%H%M%S)"

问题的出现在于正常情况下exitValue=0时为正常,大于0则是发生了错误,脚本第一次执行时,由于有新的代码提交 所以commit操作返回的结果是0,而此时如果再执行commit操作,返回nothing to commit之类的东西,使用"$?"打印执行结果会发现返回的结果是1,于是就抛出了异常,这里可以在commit之前先执行diff命令判断一下,如果结果是空,表示没有新的可提交的代码,执行一下自定义操作就可以了,

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。