#makefile #io-redirection
#makefile #перенаправление ввода-вывода
Вопрос:
В Makefile мне нужно перебрать список и записать текущий элемент списка в файл. Код выглядит следующим образом:
SHELL := /bin/bash
LIST = A B C
test:
for i in $(LIST) do
echo $ii > file.txt
done
Я получаю следующую ошибку:
/bin/bash: -c: line 1: syntax error near unexpected token `>'
Вы знаете, как это исправить?
Ответ №1:
Вам не хватает ;after $(LIST)
. Вам необходимо завершить список слов, которые вы передаете for
, прежде чем вы сможете запустить do
блок.
Как указано в комментариях, вам дополнительно потребуется : at the end of the echo
line (the command that gets run has no newlines the way this works at the normal command line so you need to explicitly separate the commands from each other).
И далее, чтобы получить ожидаемые результаты, вам нужно экранировать команду $ в командной оболочке с помощью $$i
(также выберите один из $i
или $ii
в качестве имени вашей переменной).
Комментарии:
1. @Giove Вам тоже нужно раньше
done
.for ...; do ...; done
2. Вам также необходимо экранировать ссылку на переменную оболочки, используя знаки двойного доллара:
$$ii
вместо$ii
.