Java 애플리케이션을 개발했습니다. 응용 프로그램을 5 개의 하위 응용 프로그램으로 나누고 셸 스크립트를 사용하여 각 하위 응용 프로그램에 대한 서비스 래퍼를 만들었습니다.
subaap1/bin/app.sh subaap2/bin/app.sh ...
이제 시작 스크립트를 만들고 싶습니다. startup.sh
를 사용하여 모든 래퍼 스크립트를 실행합니다.
#!/bin/bash sh subaap1/bin/app.sh start sh subaap2/bin/app.sh start ...
하지만 실행하면 다음과 같은 결과가 나타납니다.
예기치 않은 명령 : 시작
이 문제를 어떻게 해결할 수 있나요?
댓글
- 내가 아는 한이 오류는 애플리케이션에서 발생합니다. subaap1을 실행하기 위해 어떤 명령을 입력합니까?
답변
sh in을 사용할 필요는 없습니다. 스크립트를 사용하여 하위 애플리케이션을 실행하십시오.
다음을 사용하십시오.
#!/bin/bash subaap1/bin/app.sh start subaap2/bin/app.sh start ...
아래 설명에 따라 업데이트 됨 :
버전이 작동해야하지만 sh가 호출하는 셸을 알아야합니다. 셸이 잘못되었거나 사용하려는 셸에 대한 앱 권한이 올바르지 않을 수 있습니다.
설명
- 계속 하시겠습니까?
bash
는 인수를 스크립트로 전달합니다. ' 실행 중 ('이sh
가 심볼릭 링크 된 것입니다.) 저는 ' 다른 셸에 대해 알지 못함 - @Michael-sh를 사용하면 통과할까요? 맞을 수 있습니다. 나는 그냥 '하지 않습니다. 그렇게하려면 항상 내 말을 따옴표로 묶습니다. 또는 여기 에서처럼 jus t remove sh와 bash는 라인이 응용 프로그램이라고 가정하게되어 기쁩니다.
- 명령 줄에서
subaap1/bin/app.sh start
를 실행하려고했는데 완벽하게 작동합니다. 이제sh
없이 쉘 스크립트를 변경했지만startup.sh: line 2: subaap1/bin/app.sh: Permission denied
를 얻었습니다. 어떤 제안이라도 있습니까? - 예,
sh /path/to/shell/script arg
를 시도했고 인수가 통과했습니다. 실제로 어떤 쉘에sh
가 연결되어 있는지에 따라 달라질 수 있습니다. - @Michael-좋은 지적입니다! sh는 bash가 아닌 다른 곳에 갈 수 있습니다.