# Makefile
aa=$(shell cat a.c) 直接展开
cc="$(shell cat a.c)" 直接展开
bb=`cat a.c` 不展开,在Shell中执行cat命令
dd="`cat a.c`" 不展开,在Shell中执行cat命令
all:
@echo "=============================================="
echo ${aa} 输出为空
@echo "=============================================="
echo "${aa}" 输出整个文件,echo时没有换行
@echo "=============================================="
echo ${bb} 输出整个文件,所有空白以一个空格代替
@echo "=============================================="
echo ${cc} 输出整个文件,echo时没有换行
@echo "=============================================="
echo ${dd} 原文件输出,保留原文格式
@echo "=============================================="
echo $(cat a.c) 输出为空,在Makefile中执行,但无cat命令。
@echo "=============================================="
echo "$(cat a.c)" 输出为空,在Makefile中执行,但无cat命令。
@echo "=============================================="
echo "$$(cat a.c)" 原文输出,即在Shell中执行cat命令。
aa=$(shell cat a.c) 直接展开
cc="$(shell cat a.c)" 直接展开
bb=`cat a.c` 不展开,在Shell中执行cat命令
dd="`cat a.c`" 不展开,在Shell中执行cat命令
all:
@echo "=============================================="
echo ${aa} 输出为空
@echo "=============================================="
echo "${aa}" 输出整个文件,echo时没有换行
@echo "=============================================="
echo ${bb} 输出整个文件,所有空白以一个空格代替
@echo "=============================================="
echo ${cc} 输出整个文件,echo时没有换行
@echo "=============================================="
echo ${dd} 原文件输出,保留原文格式
@echo "=============================================="
echo $(cat a.c) 输出为空,在Makefile中执行,但无cat命令。
@echo "=============================================="
echo "$(cat a.c)" 输出为空,在Makefile中执行,但无cat命令。
@echo "=============================================="
echo "$$(cat a.c)" 原文输出,即在Shell中执行cat命令。
为防止发生不必要的麻烦,强烈建议,在使用这两种方法执行命令时,一定要带上双引号。否则如果文件中有"*"等通配符时,可能会产生意想不到的结果。比如“/*” 会被扩展成根目录下所有文件,如果在Makefile执行一个删除动作,会十分危险!如果发生,立即使用exfundelete来恢复!