Я не слишком хорошо знаком с make-файлами, и руководство смущает меня до конца. У меня есть ситуация, когда мне нужно обернуть текст вокруг каждого файла в каталоге и поместить его в файл.Как я могу обернуть строку вокруг каждого файла, плюс включить имя файла, с make?
В основном я начинаю с этим:
file1.exp
file2.exp
...
И нужно преобразовать каждый файл в каталоге, как это:
"string1" [fileX's filename] "string2" [fileX's contents] "string3" > fileX.tmp
Как это может быть сделано с помощью Makefile? Или мне нужно сделать другой маршрут, усложняя мое приложение другим методом сборки?
На боковой ноте, если вы можете порекомендовать какие-либо учебники, которые с меньшей вероятностью оставят меня в замешательстве, я был бы признателен.
Вместо того, чтобы пытаться упаковать это в одно действие, почему бы просто не использовать несколько действий в рецепте? например '% .tmp:% .exp ... echo" string1 "> $ @; echo $ < >> $ @; echo "string2" >> $ @; cat $ < >> $ @; echo "string3" >> $ @; '(Вставьте -n, если необходимо). – laindir
Ну, вот почему я сказал, что требования не были четко определены. Разница между моим ответом и вашим заключается в том, что ваш добавит новые строки после каждого элемента «строка1», «$ <» и т. Д., А мой не будет. Все, что нам нужно сделать, - это пример выше, где нет новых строк, так вот как я реализовал свой пример. – MadScientist
Хорошая точка. Кроме того, ваше решение имеет то преимущество, что оно порождает только 2-3 дополнительных процесса (sh, эхо, вероятно, встроенная оболочка и cat) вместо 2-10 (в зависимости от выхода из новой строки). Однако большинство реализаций эха имеют переключатель для подавления новой строки, а не расширение команды в содержимом '$ <' защищает от слишком длинной командной строки. – laindir