zoukankan      html  css  js  c++  java
  • [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

  • 相关阅读:
    python web 2
    python web1(解析url)
    webstrom 今天突然要激活
    数组排序 记录一下
    浏览器添加随机数去除缓存
    vue-cli 安装报错
    vue 初始化项目报错
    深拷贝和浅拷贝
    css3 属性 clip-path
    js数组去重
  • 原文地址:https://www.cnblogs.com/dzblog/p/6914146.html
Copyright © 2011-2022 走看看