此bash命令在Makefile中未正确运行



在Makefile中,我有这样的文件:

release:
version=$$(poetry version | cut -f2 -d " ")
echo "release $$version"

如果我运行,来自我的终端的语句运行时不会出现任何问题。

> version=$(poetry version | cut -f2 -d " ")
> echo "release $version"
release 0.0.2

但如果我跑了,

> make release                                                                                                                                  
version=$(poetry version | cut -f2 -d " ")
echo release $version
release

您可以在输出中看到,release旁边没有显示版本号。

makefile配方中的每个命令都在自己的shell进程中执行。因此,变量分配发生在一个shell进程上,然后该进程退出并丢弃其变量。echo命令在没有该变量的新进程中执行。

您需要转义换行符,并使用;命令分隔符在同一进程中运行命令。

release:
version=$$(poetry version | cut -f2 -d " "); 
echo "release $$version"

最新更新