2012-02-13 4 views
2

오랫동안이 프로그램에 어려움을 겪고 있습니다. 파일의 버전 번호와 경로로 매개 변수를 받아들이는 쉘 스크립트가 있습니다. 그 스크립트는 폴더에 모든 파일 파일을 통합하는 버전 번호의 이름으로 Zip 파일을 만듭니다.Cygwin을 사용하여 java에서 셸 스크립트를 실행하는 방법

다음 경로에 D :/cygwin에 Cygwin을 설치했습니다. 나는 Cygwin에서이 D를 설치 한 동일한 위치에 필요한 파일을 대처하고 있습니다 : \ Cygwin에서 \ 빈

명령

D :/Cygwin에서/빈/bash는 -c '/bin/test/app.sh 0410 D : \ cygwin \ bin \ Test_files

또는 Cygwin을 사용하여 Java에서 쉘 스크립트를 실행하는 방법을 제안하십시오.

문제를 다시 쓰기 : -

내가 명령에서 다음 명령을 실행하려고

프롬프트가 오류

쉬 app.sh AK-RD을 02.20 D를 제공합니다 : \ Cygwin에서 \ 빈 \ 된 test_files

오류 : -C : \ 문서 및 설정 \ 쉬 app.sh AK-RD 02.20 D : \ Cygwin에서 \ 빈 \ 된 test_files

/usr/bin/app.sh : 행 51 : LIB/lib.sh : 해당 파일 또는 디렉토리가 없습니다.

하지만 난

D에서 동일한 명령을 실행하는 경우 : Cygwin에서 \ 빈 \ 테스트> 쉬 app.sh AK-RD 02.20 D : \ Cygwin에서 \ 빈 \ 된 test_files 그것은 잘 작동

. 어느 누구도 이런 종류의 오류를 피할 수있는 방법을 제안 할 수 있습니까?

답변

4
Runtime run = Runtime.getRuntime(); 
Process p = run.exec("D:/cygwin/bin/bash -c \'/bin/test/app.sh 04.10 D:\cygwin\bin\ Test_files"); 
p.waitFor(); 
+0

명령은 사용자가 제안한 것과 같습니다. –

+0

문자열 리터럴에서 java excape 문자를 조심하십시오. 나는 이것이 더 정확하다고 생각한다 :'D :/cygwin/bin/bash -c \\ '/ bin/test/app.sh 04.10 D : \\ cygwin \\ bin \\ Test_files' – vikingsteve

관련 문제