어떻게 자바 jar 파일을 실행하고 쉘 스크립트 변수에 출력을 저장 얻을 수 있습니다

Pritam 쿠마 :

나는 3 가지 방법이있는 자바 클래스를 가지고 있으며 각각의 방법은 문자열을 반환합니다. 내가 보낸 .jar그 자바 프로젝트에서 파일을. 내가 명령 ./script1.sh을 사용하여 자식 인피부에서 jar 파일을 실행하면, 나는 명령 창에서 출력을 얻을. 내 질문에 내가 script1.sh 파일에있는 세 개의 변수에 그 값을 할당 할 수있는 방법이다. 나는 에코 $ { "Source_branch를"} 입력하면, 나는 "XXX_Source_Branch"로 출력을 얻어야한다. 여기 내 자바 코드는 다음과 같습니다

package com.main;

public class Engine {

    public static void main(String[] args) {
        try {
         getSourceBranch();
         getDestinationBranch();
         getDestEnv();
        } catch (Exception e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
        }
    }

    public static String getSourceBranch() {
        return "XXX_Source_Branch";
    }

    public static String getDestinationBranch() {
        return "XXX_Dest_Branch";
    }

    public static String getDestEnv() {
        return "XXX_Dest_Env";
    }
}

jar 파일의 이름입니다 Engine.jar. 그리고 내 스크립트 파일입니다

runjar.sh

자바 -jar Engine.jar Source_branch Destination_brnach Destination_env

Dnlst :

날리고 자바 데이터를주고

당신이 중첩 문자열을 자바에서 데이터를 저장하려는 경우, 해당 인쇄해야합니다 System.out쉘에서 읽을.

자바 코드 :

System.out.println("your source branch")
System.out.println("your destination branch")

쉘 코드

out="$(java -jar Engine.jar)"
sBranch="$(echo "$out"|sed -n '1p' /dev/stdin)"
destBranch="$(echo "$out"|sed -n '2p' /dev/stdin)"

자바 떠들썩한 파티에서 데이터를 전달할

당신이 하드 코드 문자열 경우, 자바는 문자열을 사용합니다. 당신이를 변경하려는 경우, 당신은 당신의 자바 코드를 수정해야합니다.

옵션 1 - 인수

다음을 사용하여 스크립트에서 문자열을 전달하려는 경우 java -jar Engine.jar Source_branch Destination_brnach Destination_env, 당신은 당신의에서 사용할 수 main와 방법 args매개 변수입니다.

예를 들어, 사용하여 main 메소드의 첫 번째 문자열을 인쇄 할 수 있습니다

System.out.println(args[0]);

당신이 할 경우, 제발 테스트 경우는 args.length액세스하는 가장 높은 인수보다 크다.

옵션 2 - 시스템 속성

당신이 인수를 (주 방법의 독립을)에 액세스하지 않고 매개 변수를 얻고 싶은 경우에, 당신은 시스템 속성을 사용해야합니다.

처음에는 그런 식으로 스크립트를 변경 :

java -jar -DSource_branch=yourSourceBranch -DDestination_branch=yourDestinationBranch -DDestination_env=yourDestinationEnv

Engine.jar

그 주 -D. 즉, 시스템 등록 정보를 전달하고 있음을 나타냅니다. 이것에 대한 구문은 다음 -D<key>=<value>과 그것을 사이에 위치해야 java하고 -jar.

또한, 당신은 사용해야합니다 System.getProperty()코드에서 어디서든 액세스 할 수 있습니다.

예를 들면 :

public static String getSourceBranch() {
    return System.getProperty("Source_Branch");
}

추천

출처http://43.154.161.224:23101/article/api/json?id=31576&siteId=1