5 개의 필수 매개 변수 (5 개 경로)와 3 개의 옵션 (-d는 디버그 용, -l은 log4j 무시 용, -s는 다른 무시 용)이있는 스크립트가 있습니다.시작 스크립트에서 getopts를 사용할 때 java 주 args 손실
getopts로 관리하고 있습니다. 다음 스크립트는 단순화되었습니다.
LOG4J_FILE=$DEFAULT_LOG4J_FILE
S_FILE=$DEFAULT_S_FILE
ECLIPSE_PROPS=
while getopts "l:s:d" flag; do
case "$flag" in
l) LOG4J_FILE="$OPTARG";;
s) S_FILE="$OPTARG";;
d) ECLIPSE_PROPS="-Xdebug ...";;
:) usage;;
?) usage;;
esac
done
shift $((OPTIND-1))
OPTIND=1
...
echo_and_eval $JAVA $ECLIPSE_PROPS -Dlog4.configuration=$LOG4J_FILE -Ds.file=$S_FILE -cp $CLASSPATH $MAIN_CLASS $ARGS
방금 매개 변수 5 개를 입력하면 작동합니다. 매개 변수 (l 또는 s)와 함께 하나 또는 두 개의 옵션을 추가하면 작동합니다. -d 옵션을 추가하면 Java 주 방법에 arg가 없습니다.
단서가 있습니까? 이것은 나를 미치게 만든다.
'bash -ex./script.sh'를 사용하여 스크립트를 실행하면 디버그 정보를 얻을 수 있습니다. – anubhava
나는 그것을했지만 어쨌든, 최종 자바 커맨드 라인은 나에게 완전히 괜찮은 것 같습니다. 나는 java main 메소드의 args 파라미터를 "sysout"한다. 그것은 비어 있습니다. – Zofren
관련 Java 코드를 표시 할 수 있습니까? – anubhava