Makefile에서 쉘 스크립트로 매개변수를 전달하는 "명령을 찾을 수 없음"

Makefile에서 쉘 스크립트로 매개변수를 전달하는 "명령을 찾을 수 없음"

info.properties이 속성을 포함하는 파일이 있고 MY_NAME이를 내 에서 사용할 수 있습니다 Makefile. 시도했지만 myScript.sh파일에서 직접 속성을 사용할 수 없습니다.

그래서 해당 속성을 매개변수로 에 전달하려고 합니다 myScript.sh. 다음을 수행하고 있습니다.

make 파일에서:

my_stage:
    chmod 777 myScript.sh && ./myScript.sh $(MY_NAME)

myScript.sh에는 다음이 있습니다.

#!/bin/bash -e
source .build/utils.sh

MY_NAME=$1
echo "MY_NAME=${MY_NAME}"

하지만 항상 다음과 같은 오류가 발생합니다.

chmod 777 myScript.sh && ./myScript.sh My-name-Mariana
.build/utils.bash: line 596: My-name-Mariana: command not found
make: *** [test] Error 127

이 문제를 어떻게 해결할 수 있나요?

고쳐 쓰다:

내 매개변수를 실행하려고 한다는 것을 알고 있으며 .build/utils.bash오류에서 이를 볼 수 있습니다. 하지만 해당 파일은 내 코드 프로젝트의 일부가 아니기 때문에 파일이 없기 때문에 변경할 수 없습니다.

답변1

스크립트의 596번째 줄에서 이를 명령으로 호출 .build/utils.bash해 봅니다 . My-name-Mariana리터럴 또는 로 $1존재하지 않으므로 실행이 즉시 실패합니다( -e플래그 로 인해 bash).

.build/utils.bash: line 596: My-name-Mariana: command not found

해결책은 코드를 수정하는 것입니다. 아직 여기에 제공하지 않으셨기 때문에 구체적인 제안을 드릴 수는 없지만, 관련 맥락에 맞게 질문을 업데이트하시면 누군가가 기꺼이 그렇게 해줄 것이라고 확신합니다.

답변2

귀하의 스크립트는 소스를 제공할 수 있으므로 .build/utils.bash실제로 귀하가할 수 있는읽다. 예를 들어 less .build/utils.bashMakefile이 포함된 디렉터리에서 시도해 보세요.

수정하지 않고 실제 문제를 해결하려면 변수 에 .build/utils.bash내용을 할당한 다음 명령을 사용하여 -$1MY_NAMEshift$1앞으로source .build/utils.sh.

그러나 빈 문자열을 utils.bash수신 하면 $1실패하거나 다른 작업을 수행할 수 있습니다. utils.bash이에 대한 문서를 읽거나 문서를 읽지 않고는 무엇을 기대하는지 알 수 없습니다.

관련 정보