[Shell]Shell调用并获取执行jar包后的返回值
-----------------------------------------------------------------
原创博文,如需转载请注明出处!
博主:疲惫的豆豆
链接:http://www.cnblogs.com/dzblog/p/6914146.html
----------------------------------------------------------------
场景:
写了一个java的内测分发小程序,作用是jenkins构建完成后,执行这个java程序上传ipa或apk文件到特定的服务器(非普通的ftp server),而后服务器会返回一个内测链接,进而分发这个链接到公司群里,提供给公司内部下载测试。
在jenkins这里,在上传完文件后,需要拿到一个内测链接,如何拿到呢?
解决方式:
其实解决方式很简单,只要jar里最后输出的是这个内测链接就可以了。
jar里main函数代码:
public static void main(String args[]) { String inputFile = ""; String URL = ""; if (args.length == 0) { System.out.println("Error:Please pass the upload file path"); return; }此处为代码片段 }else{ inputFile = args[0]; System.out.println("Info: File path:".concat(inputFile)); } File file = new File(inputFile); URL=ReleaseToServer(file.getAbsoluteFile()); System.out.println(URL); }
重点在最后的输出语句。
那么问题来了,如何获得呢?
通过简单的shell脚本即可:
java -jar upload.jar "file path" | tail -1
这样就可以得到最后输出的URL。
如果想要返回JVM退出时的状态,也是未尝不可。众所周知,因为程序执行完毕,正常退出返回0,非0的返回都是非正常退出。所以java代码也可以这么写。
public class Test { public static void main(String[] args) { System.exit(4); } }
不过如果无法改java代码也无所谓,直接shell命令如下:
java -jar test.jar echo $?
返回值是0,说明程序正常执行完毕。
参考链接:
How to get the last output of a file in terminal?
End