将Bash用于Makefile

时间:2017-03-16 16:27:07

标签: bash gnu-make

我需要在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

有关问题原因的任何想法吗?

1 个答案:

答案 0 :(得分:3)

好吧,$(line)(也就是说,Make取消转义后的代码)并没有按照您的意愿行事。它是一个command substitution,它将执行文字命令line,它可能是您系统上的命令,也可能不是。

通常,任何需要转义字符或者在shell脚本中编写为多行的内容都应该在shell脚本中。你会以这种方式避免头痛。