以下はbashシェルで動作します
cp abc.tex "abc-$(date +"%Y-%m-%-d-%H-%M-%S").tex"
しかし、makefile にはありません。どうすれば修正できますか?
メイクファイルは次のとおりです:
b:
cp abc.tex "abc-$(date +"%Y-%m-%-d-%H-%M-%S").tex"
「make b」を実行すると、bash は次のように言います:
cp abc.tex "abc-.tex"
答え1
Makefile では、$(...)
は複数文字の変数の展開を表します。という変数make
がないので、空の文字列に置き換えられます。make
date +"%Y-%m-%-d-%H-%M-%S"
make
を使用するシェルを$(...)
コマンド置換として実行させるには、次のように記述します$$(...)
。
b:
cp abc.tex "abc-$$(date +"%Y-%m-%-d-%H-%M-%S").tex"
のGNUmake
版には、シェルのコマンド置換と同様に動作する もmake
あります。$(shell ...)
答え2
おそらくマクロを探しているのでしょう$(shell ...)
。
b:
cp abc.tex "abc-$(shell date +"%Y-%m-%-d-%H-%M-%S").tex"
これにより、次の出力が生成されます。
> make b
cp abc.tex "abc-2021-10-21-16-54-02.tex"