在 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"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)