在Makefile中使用bash时出现奇怪的segfault
我需要在Makefile中逐行读取文件。 以下情况会触发SEGA故障:在Makefile中使用bash时出现奇怪的segfault,bash,gnu-make,Bash,Gnu Make,我需要在Makefile中逐行读取文件。 以下情况会触发SEGA故障: all: @cat myFile.txt | while read -r line; do echo $$(line); done 奇怪的是,以下作品(打印文件内容): 知道问题的原因吗?好吧,$(行)(也就是说,Make取消转义后的代码)不会执行您期望的操作。它是一个将执行文本命令行,该命令可能是系统上的命令,也可能不是系统上的命令 一般来说,任何需要转义字符或在shell脚本中编写为多行的内容都应该在shell
all:
@cat myFile.txt | while read -r line; do echo $$(line); done
奇怪的是,以下作品(打印文件内容):
知道问题的原因吗?好吧,$(行)
(也就是说,Make取消转义后的代码)不会执行您期望的操作。它是一个将执行文本命令行
,该命令可能是系统上的命令,也可能不是系统上的命令
一般来说,任何需要转义字符或在shell脚本中编写为多行的内容都应该在shell脚本中。这样可以省去你的麻烦。好吧,$(行)
(也就是说,Make取消转义后的代码)不会达到你期望的效果。它是一个将执行文本命令行
,该命令可能是系统上的命令,也可能不是系统上的命令
一般来说,任何需要转义字符或在shell脚本中编写为多行的内容都应该在shell脚本中。这样可以省去麻烦。Shell变量可以用大括号括起来
${line}
;Make变量可以括在大括号${line}
或大括号$(line)
中。Shell变量可以括在大括号${line}
中;Make变量可以括在括号${line}
或括号$(line)
中。
all:
@cat myFile.txt | while read -r line; do echo $$line; done