Makefile에서 긴 변수 이름을 사용하는 방법은 무엇입니까?

Makefile에서 긴 변수 이름을 사용하는 방법은 무엇입니까?

오늘은 명령에 대해 배우면서 make현재 디렉토리를 읽으면 어떤 bash명령 이라도 실행할 수 있는 것 같다는 것을 발견했습니다.Makefile

그러나 문제가 발생했습니다. 변수를 사용할 때 시스템은 변수의 첫 번째 문자만 읽는 것 같습니다.

내 파일과 결과는 다음과 같습니다.

# FILE CONTENT
Z="zen_on_the_moon"
now=$(date)

fun:
    touch $Z
    echo $now
    echo "file created on" $now >> $Z

# RUNNING IT
=>make fun
touch "zen_on_the_moon"
echo ow
ow
echo "file created on" ow >> "zen_on_the_moon"

now아래 프로젝트에서 변수를 어떻게 사용해야 하나요 ?Makefilefun

답변1

Makefile너 보다변수 참조구문을 사용하여 $(var_name). 사용하면 $var_name달러 기호 $, 여는 대괄호 (또는 여는 중괄호 이외의 첫 번째 문자가 {변수 이름으로 처리됩니다.

에서는 $now실제로 변수의 내용을 얻은 $n다음 리터럴 문자열을 얻습니다 ow.

따라서 다음이 필요합니다.

$(now)

라는 변수의 내용을 가져옵니다 now.

또한 얻어지는 것은 명령의 결과가 아니라 now=$(date)name 변수의 내용이라는 점에 유의하십시오 . 당신은 사용해야합니다datedate쉘 기능:

now=$(shell date)

관련 정보