[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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM