После создания чего-либо make
я хочу переместить все файлы, заканчивающиеся на , .cache.{js,woff}
в подпапку.
(cd $(PFROOT)/PVWR2/gwt/pdfwebviewer/; \
mkdir -p cache_files; \
mv *.cache.{js,woff} sub_folder)
Проблема в том, что при запуске make
он, похоже, интерпретируется *.cache.{js,woff}
как имя файла, а не что-то динамическое, и, конечно же, нет файла с явным именем *.cache.{js,woff}
. Когда я просто перехожу в папку и вручную перемещаю ее из оболочки с помощью приведенной выше команды, все работает без сбоев.
Я понимаю, что это связано с глобализацией, но не знаю, как это исправить.
решение1
{...}
— это специфичный для bash синтаксис для раскрытия фигурных скобок, но /bin/sh
по умолчанию вместо bash
.
Из info make
раздела 5.3.2:
Программа, используемая в качестве оболочки, берется из переменной . Если эта переменная не задана в вашем makefile, то в качестве оболочки используется
SHELL
программа ./bin/sh
Если вы хотите использовать bash для анализа конструкций оболочки в вашем Makefile, вы можете добавить следующее вверху:
SHELL := /bin/bash