2015-08-10 2 views
1

После отображения here, что Make быстро удаляет новые строки из архнута оболочки.Сделать не удалось обработать многострочную функцию оболочки

Я попробовал этот Makefile:

# The original lines of the command were too long 
# and in-fact, that's why i split them into 2 lines. 
# For simplicity, I replaced the lines with single-character words. 

define cmd 
rm 
dir 
endef 


x := $(shell $(cmd)) 

all: 
    @: 

Бег, я получаю:

make: rm 
dir: Command not found 

Означает ли это, что сделать передает команду "гт \ NDIR" (обратите внимание на NL charachter в промежутке между !)?

Потому что это не то, что мы видим в приведенной выше ссылке.

ответ

0

Да, так оно и есть. Если вы добавите дополнительное пространство после rm, вы должны увидеть результат rm: cannot remove ‘\ndir’: No such file or directory. Если же, как я уже ранее отвечал here, вы используете

define cmd 
rm dir 
endef 

или

define cmd 
rm \ 
dir 
endef 

Он будет выполнять rm dir.

Смежные вопросы