Ubuntu中GNU Make中的“{}”扩展

今天在看阮一峰make命令教程之Makefile文件的语法这一节的时候碰到如下一行命令:

srcfiles := $(shell echo {00..99}.txt)

1、测试在shell中这个命令会输出什么:

echo {0..9}

结果输出:

0 1 2 3 4 5 6 7 8 9

原来是对大括号中的内容进行了扩展。

 

2、知道了大括号{}的作用,于是尝试在Makefile中也测试一下:

srcfiles := $(shell echo {0..9})
all:
    echo $(srcfiles)

make,结果输出:

{0..9}

wtf?黑人问号,这跟预想的结果不一样啊。咋回事儿啊,这咋整啊。

 

3、花了很多时间,网上搜了很多东西也没有解释清楚的(主要是我搜的关键词不太准确,所以导致搜不到准确结果)。不过最后还是功夫不负有心人,在下面这篇文章里找到了结果:

http://www.voidcn.com/article/p-vghybabd-btq.html

Ubuntu中Makefile在不指定解释器时,一般调用的是/bin/sh解释器,而不是bash解释器,某些版本的Ubuntu中的sh解释器不支持大括号{}扩展!

修改Makefile,指定bash解释器:

SHELL=/bin/bash

srcfiles := $(shell echo {0..9})
all:
    echo $(srcfiles)

make,结果输出:

0 1 2 3 4 5 6 7 8 9

大功告成。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值