将 bash 命令的结果分配给 make 中的变量
Assign results of a bash command to a variable in make
我正在尝试让这个 shell 脚本在 make
中工作:
$ VERSION=$(echo 'ThisBuild / version := "1.20"' | grep -e 'This.*version' | grep -Eo '[0-9]+\.[0-9]+')
$ echo $VERSION
1.20
make
:
$ make -v
GNU Make 4.2.1
Built for x86_64-pc-linux-gnu
Makefile
:
version:
VERSION=$(echo 'ThisBuild / version := "1.20"' | grep -e 'This.*version' | grep -Eo '[0-9]+\.[0-9]+') && \
echo "VERSION: ${VERSION}"
无效:
$ make version
VERSION= && \
echo "VERSION: "
VERSION:
这可以做到吗?
如果您想将 $
传递给 shell,您必须将其从 make 中转义,方法是将其加倍:$$
.
version:
VERSION=$$(echo 'ThisBuild / version := "1.20"' | grep -e 'This.*version' | grep -Eo '[0-9]+\.[0-9]+') && \
echo "VERSION: $${VERSION}"
否则,make 会认为您正在引用一个 make 变量并展开它。
我正在尝试让这个 shell 脚本在 make
中工作:
$ VERSION=$(echo 'ThisBuild / version := "1.20"' | grep -e 'This.*version' | grep -Eo '[0-9]+\.[0-9]+')
$ echo $VERSION
1.20
make
:
$ make -v
GNU Make 4.2.1
Built for x86_64-pc-linux-gnu
Makefile
:
version:
VERSION=$(echo 'ThisBuild / version := "1.20"' | grep -e 'This.*version' | grep -Eo '[0-9]+\.[0-9]+') && \
echo "VERSION: ${VERSION}"
无效:
$ make version
VERSION= && \
echo "VERSION: "
VERSION:
这可以做到吗?
如果您想将 $
传递给 shell,您必须将其从 make 中转义,方法是将其加倍:$$
.
version:
VERSION=$$(echo 'ThisBuild / version := "1.20"' | grep -e 'This.*version' | grep -Eo '[0-9]+\.[0-9]+') && \
echo "VERSION: $${VERSION}"
否则,make 会认为您正在引用一个 make 变量并展开它。