在 make 中设置一个 shell 变量,以便稍后在同一行中使用

set a shell variable in make to use later on the same line

如果你在 sh 中这样做:

ABC=123 && echo value is ${ABC}

你明白了

value is 123

如果你把它放在 makefile:

main:
    echo value is ${ABC}

(除了不要复制粘贴,因为我的制表符实际上是四个空格)

然后像这样将其传递到文件中:

$ ABC=123 make main
echo value is 123
value is 123

一切正常

但我想在 makefile 的同一行 中设置 sh 变量

main:
    ABC=123 && echo value is ${ABC}

我明白了:

$ make main
ABC=123 && echo value is 
value is

如何设置 shell 变量?


我尝试这样做是因为我正在获取一个文件..这只是我认为行得通但行不通的事情的一个最小例子。

那是因为变量扩展了 make 而不是 shell。您可以通过打印没有 ${ABC} 的 echo 的第一行来判断它。如果要将其传递给 shell,则需要引用美元符号,例如:

$ cat Makefile
main:
        ABC=123 && echo value is $${ABC}

$ make main
ABC=123 && echo value is ${ABC}
value is 123