나는 makefile
을 가지고 있는데, 내가 썼던 bash 스크립트에 이미 존재하는 몇 가지 변수를 설정하려고한다 : set-vars.sh
(단지 변수 이름과 값을 포함하고있다).bash 스크립트에서 메이크 파일 변수 읽기
나는 여러 가지 다른 bash
스크립트에서 이러한 변수를 사용하고 있습니다. 내 makefile
에서도 사용할 수 있어야합니다.
bash
스크립트에서 변수를 설정하는 가장 좋은 방법은 무엇인지 알아 내려고 시도한 결과, makefile
의 작동 방식을 발견했습니다.
set-vars.sh
:이
# set vars
foo=FOO1
bar=BAR1
baz=BAZ1
# if a command line arg is given (e.g. foo)
# echo value command line arg (e.g. echo $foo)
if ! [ -z ${1+x} ]; then echo ${!1}; fi
이의 이름을 명령 행 인수에 제공되는 변수의 값을 말이지 echo
마지막 줄이 여기에 마법이되어있는 경우에는 다음과 같이한다입니다 명령 행 인수 나는 makefile
에서이 스크립트를 호출하고 변수 이름을 제공하고 makefile
변수를 설정 echo
에드 값을 사용합니다.
Makefile
.PHONY: target1 target2 target3
export foo = $(shell sh set-vars.sh foo)
target1:
@echo $(foo)
# ... other targets which reference $(foo) ...
이 작동하지만, 아마 그 일의 해키 방법입니다. 내가하고 싶은 일을하는 더 단순하고 우아한 방법이 있는지 궁금합니다.
는 I에 유래에 몇 가지 유사한 질문과 답변 건너했지만 내 예와 함께 작동 아무것도 찾지 못했습니다. 내가 이미 놓친 답변이 있다면, 저를 지적하십시오.
감사합니다.
쉘에서'make'를 호출하는 변수를 설정하거나'make' 명령 행에 넣을 수 없습니까? – Barmar
다른 스크립트는'if! [-z ...'라인? – Beta
@Barmar,이 메이크 파일은이 메이크 파일의 내부 동작에 익숙하거나 잘 모르는 다른 사람들이 사용하기 때문에 명령 줄에 넣을 수 없습니다. 가능한 한 간단하게 makefile의 호출을 유지하고 싶습니다 ... 그러나 쉘에서'make '를 호출하는 변수를 설정한다는 것은 무엇을 의미합니까? 쉘 스크립팅에 너무 능숙하지 않아서 미안해. – tamjd1