首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用$()代替`` backticks的Makefile

使用$()代替`` backticks的Makefile
EN

Unix & Linux用户
提问于 2021-03-26 22:43:46
回答 1查看 753关注 0票数 -2

如何正确地规避Makefile中的shell扩展语法$()

代码语言:javascript
复制
.PHONY: test
test:
        @if [ `find myDir -type f -not -name '*.openapi.yaml' | wc -l ` != 0 ]; then \
                echo "All files must end with '.openapi.yaml'";                           \
                find myDir -type f -not -name '*.openapi.yaml';                      \
                exit 42;                                                                  \
        fi

当我尝试修改它时,

代码语言:javascript
复制
@if [ $( find myDir -type f -not -name '*.openapi.yaml' | wc -l ) != 0 ]; then \

我明白了,

代码语言:javascript
复制
/bin/sh: line 0: [: !=: unary operator expected

如果我试图用$转义\$,我会得到同样的错误,

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2021-03-27 01:57:40

您需要双$

代码语言:javascript
复制
.PHONY: test test1 test2

test: test1 test2

test1:
    @echo test1; if [ $(echo 0) == "0" ]; then echo true; else echo false; fi

test2:
    @echo test2; if [ $(echo 0) == "1" ]; then echo true; else echo false; fi

下面是一个例子:

代码语言:javascript
复制
$ make
test1
true
test2
false
票数 5
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/641299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档