[英]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運行這個echo
和printf
命令。 像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.