mv * .cache. {js, woff} sub_folder - funciona como um comando shell, mas não dentro de um Makefile

1

Depois de criar algo com make , quero mover todos os arquivos que terminam em .cache.{js,woff} para uma subpasta.

(cd $(PFROOT)/PVWR2/gwt/pdfwebviewer/; \
mkdir -p cache_files; \
mv *.cache.{js,woff} sub_folder)

O problema é que, ao executar make , parece interpretar *.cache.{js,woff} como um nome de arquivo e não algo dinâmico e, é claro, não há nenhum arquivo que tenha o nome explícito *.cache.{js,woff} . Quando eu apenas navegar para a pasta e movê-lo manualmente a partir do shell com o comando acima funciona sem problemas.

Eu entendo que isso tem a ver com globbing, mas eu não sei como consertar isso.

    
por Philipp 23.11.2017 / 13:23

1 resposta

4

{...} é a sintaxe específica do bash para expansão de chaves, mas usa /bin/sh por padrão em vez de bash .

De info make , seção 5.3.2:

The program used as the shell is taken from the variable SHELL. If this variable is not set in your makefile, the program /bin/sh is used as the shell.

Se você quiser usar o bash para analisar construções de shell em seu Makefile, você pode adicionar o seguinte ao topo:

SHELL := /bin/bash
    
por 23.11.2017 / 13:27