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.bash
Makefile이 포함된 디렉터리에서 시도해 보세요.
수정하지 않고 실제 문제를 해결하려면 변수 에 .build/utils.bash
내용을 할당한 다음 명령을 사용하여 -$1
MY_NAME
shift
$1
앞으로너 source .build/utils.sh
.
그러나 빈 문자열을 utils.bash
수신 하면 $1
실패하거나 다른 작업을 수행할 수 있습니다. utils.bash
이에 대한 문서를 읽거나 문서를 읽지 않고는 무엇을 기대하는지 알 수 없습니다.