나는 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
날리고 자바 데이터를주고
당신이 중첩 문자열을 자바에서 데이터를 저장하려는 경우, 해당 인쇄해야합니다 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");
}