根据GNU手册:
它将每个换行符或回车符/换行符对转换为单个空格.如果它是结果中的最后一个,它还会删除尾部(回车和换行)换行符.
但是在没有回车的情况下使用awk会更加困难:
FILE = $(shell cat $(PATH))
TEXT = $(shell echo "$(FILE)" | awk '/Text/ {print $$3}')
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,在将文件内容分配给Makefile变量或任何智能解决方法时,是否有办法保持回车?
不,您不能在函数结果中保留换行符$(shell ...)。
您当然可以像这样更改 makefile:
FILE = $(PATH)
TEXT = $(shell cat $(FILE) | awk '/Text/ {print $$3}')
Run Code Online (Sandbox Code Playgroud)
或者,为了避免 UUOC,
TEXT = $(shell awk '/Text/ {print $$3}' < $(FILE))
Run Code Online (Sandbox Code Playgroud)