首页 > 解决方案 > 在 make 中设置一个 shell 变量,以便稍后在同一行使用

问题描述

如果你在 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 变量?


我正在尝试这样做,因为我正在采购一个文件..这只是我认为行不通的事情的一个最小示例。

标签: makefilesh

解决方案


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

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

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

推荐阅读