Como usar o nome de variáveis longas no Makefile?

1

Hoje estou aprendendo o comando make , e parece que pode executar qualquer comando bash lendo Makefile no diretório atual.

No entanto, encontrei um problema. Que ao usar variáveis, parece que o sistema só lerá o primeiro caractere da variável.

Abaixo está o meu arquivo e resultado em execução:

# 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"

Como devo usar a variável now no item Makefile sob fun ?

    
por Zen 13.10.2015 / 06:52

1 resposta

5

Em Makefile , você refere-se a uma variável usando a sintaxe %código%. Usando $(var_name) , o primeiro caractere que não seja um sinal de dólar $var_name , abra parêntese $ ou abra a chave ( tratada como nome da variável.

Em { , você realmente obtém o conteúdo da variável $now seguido pela string literal $n .

Então você precisa:

$(now)

para obter o conteúdo da variável chamada ow .

Observe também que now obtém o conteúdo da variável chamada now=$(date) em vez do resultado do comando date . Você precisa usar a função de shell :

now=$(shell date)
    
por 13.10.2015 / 07:08

Tags