mv *.cache.{js,woff} sub_folder - 用作 shell 命令,但不在 Makefile 内

mv *.cache.{js,woff} sub_folder - 用作 shell 命令,但不在 Makefile 内

使用 构建某些内容后,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}。当我只是导航到该文件夹​​并使用上述命令从 shell 手动移动它时,它可以顺利工作。

我知道这与通配符有关,但我不知道如何解决这个问题。

答案1

{...}是 bash 特定的大括号扩展语法,但 make/bin/sh默认使用而不是bash.

来自info make,第 5.3.2 节:

用作 shell 的程序取自变量SHELL。如果您的 makefile 中未设置此变量,则该程序/bin/sh将用作 shell。

如果要使用 bash 解析 Makefile 中的 shell 结构,可以将以下内容添加到顶部:

SHELL := /bin/bash

相关内容