[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

posted @ 2017-06-01 17:23  疲惫的豆豆  阅读(13290)  评论(0编辑  收藏  举报