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

相關內容