makefile中使用echo -e 无法生效的问题

问题:makefile 中执行echo -e 不生效;

      @echo -e "/*****auto create .h head file by makefile***************/\n" >test.h

结果test.h内容:

/*****auto create .h head file by makefile***************/\n

-e 没有生效:

原因:由于系统不一样,makefile的默认shell(一个是bash,一个是dash)不一样造成的两种不同的结果,即在bash下正常,在dash下就多显示了一个-e(Ubuntu 6.10开始,默认使用的shell是dash,而不是bash,原因是dash更快、更高效,使用dash可以加快启动速度);makefile本身有个环境变量也叫SHELL(跟系统环境变量SHELL同名,但不一样),我们可以在makefile中明确的给他赋值,以指明用哪个shell程序来解析命令。如SHELL = /bin/bash。可以在makefile中查看当前shell 命令的是那种,echo $SHELL

解决方法(2选1):

1,makefile 声明shell,SHELL = /bin/bash;

2,指明echo的绝对路径:@/bin/echo -e "/*****auto create .h head file by makefile***************/\n" >test.h

echo 无法输出#!/bin/sh 的内容,因为echo下面用双引号的话无法解析!字符,可以使用单引号代替

 echo '#!/bin/sh'>testcase.sh

echo 输出换行\n

 echo -e '#!/bin/sh\necho "start run test case ..."\n'>testcase.sh

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值