我如何用终端的值连接一个字符串?

时间:2019-07-08 10:56:28

标签: makefile

下面是我的makefile

LATEST_GIT_COMMIT_HASH := $(shell git rev-parse HEAD | cut -c1-8)

docker:
    @echo "\n" &&\
    read -p "Please enter a version number (ex: 0001): " release_vesion &&\
    echo $$release_vesion_${LATEST_GIT_COMMIT_HASH}

我尝试从输入和git版本号中合并release_version,然后将它们打印出来。

但它似乎不起作用。

如何用输入值连接字符串?

1 个答案:

答案 0 :(得分:1)

在bash中,您需要使用${var_name}concat_some_more_text,花括号将变量与所连接字符串的其余部分分开。例如:

    var_name=bob
    echo "1: $var_nameconcat_some_more_text"
    echo "2: ${var_name}concat_some_more_text"

返回:

    1:
    2: bobconcat_some_more_text

因此您的代码应如下所示:

LATEST_GIT_COMMIT_HASH := $(shell git rev-parse HEAD | cut -c1-8)

docker:
    @echo "\n" &&\
    read -p "Please enter a version number (ex: 0001): " release_vesion &&\
    echo "release ver: $$release_vesion" ; \
    echo "$${release_vesion}_$(LATEST_GIT_COMMIT_HASH)"

在使用中,$${...}用于bash变量(您已经正确使用了双$而不是大括号),而$(...)用于make变量。您不一定总是需要bash变量的花括号,但是在将变量名连接到另一个字符串时,确实需要它们将它们分开。