问题: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