@D在shell脚本中的含义是什么

时间:2017-03-07 10:51:54

标签: shell

我的代码为

   echo -e "\\n" "=====  Making: $(@D)\n";\
    if [ ! -d $(@D) ]; then \
            mkdir $(@D); \
    else \
            if [ -e $(@D)\PackageBuild.error ]; then \
                    rm $(@D)\PackageBuild.error;\
            fi; \

我不确定@D正在做什么。 有人可以帮助我吗

2 个答案:

答案 0 :(得分:6)

通常$(command)执行命令并用命令输出替换$(command)。 因此必须有一个名为@D的文件,它可执行并位于搜索路径中。

但如果这不是shell脚本而是make文件,则意味着:

$(@D)
     

目标文件名的目录部分,带尾部   斜线删除。如果$@的值为dir/foo.o,那么$(@D)就是dir   .。如果$@不包含斜杠,则此值为var reg = /exam+ple/g;

答案 1 :(得分:0)

bash没有像@D这样的语法概念。我想你在这里有一个特殊的背景,我想再次在Makefilemake是一个特殊程序,它不会逐字执行Makefile中的脚本。相反,它会预处理脚本。

在调用脚本之前评估

$(x),并将其替换为Makefile中设置的变量。所以我想在Makefile中的某个地方你有一个名为@D的变量设置为特定值。 (并且有一个预定义的,正如D. Mika发现的那样; - )