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