Después de crear algo, make
quiero mover todos los archivos que terminan en .cache.{js,woff}
una subcarpeta.
(cd $(PFROOT)/PVWR2/gwt/pdfwebviewer/; \
mkdir -p cache_files; \
mv *.cache.{js,woff} sub_folder)
El problema es que, cuando se ejecuta, make
parece interpretarse *.cache.{js,woff}
como un nombre de archivo y no como algo dinámico y, por supuesto, no hay ningún archivo que tenga el nombre explícito *.cache.{js,woff}
. Cuando navego a la carpeta y la muevo manualmente desde el shell con el comando anterior, funciona sin problemas.
Entiendo que tiene que ver con el globbing pero no sé cómo solucionarlo.
Respuesta1
{...}
es una sintaxis específica de bash para la expansión de llaves, pero se utiliza /bin/sh
de forma predeterminada en lugar de bash
.
De info make
la sección 5.3.2:
El programa utilizado como shell se toma de la variable
SHELL
. Si esta variable no está configurada en su archivo MAKE, el programa/bin/sh
se utiliza como shell.
Si desea utilizar bash para analizar construcciones de shell en su Makefile, puede agregar lo siguiente en la parte superior:
SHELL := /bin/bash