mv *.cache.{js,woff} sub_folder - シェルコマンドとして使用されますが、Makefile内では使用されません。

mv *.cache.{js,woff} sub_folder - シェルコマンドとして使用されますが、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}。上記のコマンドを使用してフォルダに移動し、シェルから手動で移動すると、スムーズに動作します。

これがワイルドカードに関連していることを知っていますが、この問題を解決する方法がわかりません。

ベストアンサー1

{...}bashのみ中括弧拡張構文ですが、makeは/bin/shデフォルトでbash

info make、セクション5.3.2から:

シェルとして使用されるプログラムは変数から取得されますSHELL。この変数がmakefileに設定されていない場合、プログラムは/bin/shシェルのように動作します。

bashを使用してMakefileのシェル構造を解析するには、上部に次のように追加できます。

SHELL := /bin/bash

おすすめ記事