$$ in shell,Linux

问题描述 投票:1回答:1

我有一个make文件中的以下代码,如果不存在,我知道这会在Home中创建bin文件夹...但是我无法理解$$ HOME / bin是什么意思...

我在Google上搜索,发现$$是获取bash的processid ...但无法理解$$ HOME / bin的意思...有人可以解释吗?

.PHONY: home_bin
home_bin: ## Create home bin if not created
    @ if [[ ! -d "$$HOME/bin" ]]; then \
        echo "Creating $$HOME/bin"; \
        mkdir $$HOME/bin; \
        echo "✔︎ $$HOME/bin created"; \
    else \
        echo "✔︎ $$HOME/bin already created"; \
    fi

谢谢。

bash makefile
1个回答
4
投票

make本身执行$前缀字符的扩展; $$扩展为单个文字$以传递到外壳。

考虑一个简单的Makefile:

x=f

all:
        xoo=3 && echo $xoo

将输出foo,因为

  1. [make$x扩展为单个字符f
  2. [make将字符串xoo=3 && echo foo传递到外壳程序以执行]

比较

x=f

all:
        xoo=3 && echo $$xoo

输出3,因为

  1. [make$$展开为$
  2. [make将字符串xoo=3 && echo $xoo传递到外壳程序以执行]
© www.soinside.com 2019 - 2024. All rights reserved.