我需要在Makefile中逐行读取文件。 以下触发段错误:
all:
@cat myFile.txt | while read -r line; do echo $$(line); done
奇怪的是以下工作(打印文件的内容):
all:
@cat myFile.txt | while read -r line; do echo $$line; done
有关问题原因的任何想法吗?
答案 0 :(得分:3)
好吧,$(line)
(也就是说,Make取消转义后的代码)并没有按照您的意愿行事。它是一个command substitution,它将执行文字命令line
,它可能是您系统上的命令,也可能不是。
通常,任何需要转义字符或者在shell脚本中编写为多行的内容都应该在shell脚本中。你会以这种方式避免头痛。