aah*_*nik 2 bash shell makefile
在 Makefile 里面我有这样的:
release:
version=$$(poetry version | cut -f2 -d " ")
echo "release $$version"
Run Code Online (Sandbox Code Playgroud)
如果我运行,我的终端中的语句将毫无问题地运行。
release:
version=$$(poetry version | cut -f2 -d " ")
echo "release $$version"
Run Code Online (Sandbox Code Playgroud)
但如果我跑的话
> version=$(poetry version | cut -f2 -d " ")
> echo "release $version"
release 0.0.2
Run Code Online (Sandbox Code Playgroud)
您可以在输出中看到release版本号旁边。未显示。
makefile 配方中的每个命令都在其自己的 shell 进程中执行。因此,变量赋值发生在一个 shell 进程上,然后该进程退出并且其变量被丢弃。该echo命令在没有该变量的新进程中执行。
您需要转义换行符并使用;命令分隔符在同一进程中运行命令。
release:
version=$$(poetry version | cut -f2 -d " "); \
echo "release $$version"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
820 次 |
| 最近记录: |