Make

使用日期時間將文件複製到文件名在 bash 中有效,但在 makefile 中無效

  • October 21, 2021

以下在 bash shell 中工作

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"

在 Makefile 中,$(...)表示多字元make變數的擴展。您沒有make名為 的變數date +"%Y-%m-%-d-%H-%M-%S",因此將其替換為空字元串。

make要讓使用 execute$(...)作為命令替換的 shell,請將其寫為$$(...)

b:
       cp abc.tex "abc-$$(date +"%Y-%m-%-d-%H-%M-%S").tex"

的 GNUmake變體make也具有$(shell ...)與 shell 中的命令替換類似的工作方式。

也許您正在尋找$(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"

引用自:https://unix.stackexchange.com/questions/674287