sh 파일에서 sh를 실행하는 방법

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가 아닌 다른 곳에 갈 수 있습니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다