簡體   English   中英

Makefile:echo不正確打印

[英]Makefile: echo not properly printing

我有以下命令

$ echo \\newcommand{\\coverheight}{11.0in} > tmp
$ cat tmp
echo \\newcommand{\\coverheight}{11.0in} > tmp

但是當我在make文件中使用相同的echo命令時,它沒有正確寫入文件。

# Makefile
all:
       printf '\\newcommand{\\coverheight}{11.0in}' > tmp

運行`make'后,輸出為:

$ cat tmp 

ewcommand{

如何使用echo使用Makefile正確寫入文件?

make只是發送一個配方(除了分割長行)到你的shell並且不解釋它。 所以你的shell解釋它。

所以你的shell運行這個echoprintf命令。 像bash或zsh這樣的shell使用echo和printf的內置命令(如果你沒有明確地使用/bin/echo命令)。

shell之間的內置命令行為之間存在差異。 更重要的是,您可以使用一個shell來運行交互式命令, make使用不同的shell(默認情況下為/ bin / sh)來處理收件人。

以下是shell之間差異的示例。 當我在bash運行echo \\\\newcommand ,我得到:

$ echo \\newcommand
\newcommand

當我在zsh運行echo \\\\newcommand ,我得到:

$ echo \\newcommand

ewcommand

我懷疑你因此而得到不同的結果。 實際上printf '\\\\newcommand{\\\\coverheight}{11.0in}'必須更正確,因為它使用強引號。

無論如何,在makefile中打印的一種方法似乎是使用外部命令/ bin / echo:

all:
       command echo '\\newcommand{\\coverheight}{11.0in}' > tmp

或者使用您已經完成的強引用:

all:
       printf '\\newcommand{\\coverheight}{11.0in}' > tmp

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM