2017-03-16 9 views
0

我需要在Makefile中逐行讀取文件。 以下觸發段錯誤:在Makefile中使用bash時奇怪的段錯誤

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

Shell變量可以用大括號'$ {line}'括起來; Make變量可以用括號'$ {line}'或括號'$(line)'括起來。 –

回答

3

那麼,$(line)(也就是說,Make未被轉義的代碼)並不會達到你期望的效果。它是一個command substitution,它將執行字面命令line,它可能是也可能不是您系統上的命令。

一般來說,任何需要轉義字符或者在shell腳本中被寫成多行的東西都應該在shell腳本中。你會以這種方式節省自己的頭痛。