2012-03-13 6 views
0

일부 환경 변수를 제공하고 사용자에게 몇 가지 옵션을 제공하는 유닉스 쉘 스크립트 (bash)가 있습니다. 사용자 입력을 기반으로 특정 작업을 수행하는 다른 유닉스 쉘 스크립트를 호출합니다. 아래의 시작 앱 서버 옵션에 문제가 있습니다. main.sh에서 appserver/run.sh 스크립트를 실행할 때 "jarfile start.jar에 액세스 할 수 없습니다"라는 메시지가 표시됩니다. run.sh 스크립트로 직접 이동하여 해당 디렉토리에서 실행하면 작동합니다. start.jar은 Jetty 응용 프로그램 서버를 시작합니다. main.sh에서 run.sh를 실행하는 방법에 대한 아이디어가 있습니까?유닉스 쉘 스크립팅 및 Java Jar 명령어

권한 :

-rw-r--r-- 1 colgray eng 42364 Jan 10 15:40 start.jar 

main.sh :

source ./setupenvironment.sh 
echo "Which Example would you like to run?" 
select yn in "one" "two" "start app server" "Quit" do 
    case $yn in 
     "one") ./examples/one/scripts/one.sh; break;; 
     "two") ./examples/twp/scripts/two.sh; break;; 
     **"start app server") ./examples/appserver/run.sh; break;;** 
     Quit) exit;; 
    esac 
done 

/examples/appserver/run.sh :

java -jar start.jar 

답변

1

당신이 ./examples/appserver가 아닌 다른 디렉토리에서 실행하고 있기 때문에,이에게 jar 파일을 찾을 수 없습니다 수 있습니다 : 당신이 보인다는 사실을 바탕으로

<somewhere> <-- this is where you are | ^ +--> examples | <- this is a distance too far :-) | v +--> appserver <- this is where start.jar is 

디렉토리에서 실행되는 경우 examples의 삶 (그렇지 않으면 상대 경로가 작동하지 않을 것), 당신은해야 하나

java -jar examples/appserver/start.jar 

나 :

cd examples/appserver 
java -jar start.jar 

귀하의 run.sh 파일에 있습니다.

+0

디렉토리로 변경 한 다음 java -jar start.jar을 실행하면 많은 도움이되었습니다. – c12

0

변경 실행 start.jar에 절대 경로를 사용하려면 .sh를 사용하십시오.