Makefile 只打印 echo 语句的一部分

Makefile only prints part of echo statement

我正在编写我的第一个 makefile 以多种方式编译乳胶代码(使用 beamer 包),但我陷入了一个非常基本的问题,甚至与乳胶无关。考虑我的 makefile 的以下 MWE:

test.tex: 
    echo '\input{1-slidepreamble} \changemode{handout}' > Xtest.tex

它创建了一个文件Xtest.tex,但该文件只包含文本

\input{1-slidepreamble}

我不知道为什么?更重要的是,当我复制同一行时

echo '\input{1-slidepreamble} \changemode{handout}' > Xtest.tex

进入终端,它会创建一个包含两个命令的文件。我迷路了。谁能给我解释一下这是怎么回事?

更新: 好像和\c有点关系。当我写

test2 :
    echo '\input{1-slidepreamble}' > test2.tex 
    echo '\changemode{handout}' >> test2.tex
    echo 'more text' >> test2.tex
    echo '\c see this?' >> test2.tex 

然后它只会将第 1 行和第 3 行打印到文件中。

有没有一种方法可以让 makefile 不尝试计算 \c 代码而只是将其复制到文件中?

可能是您使用的 echo 版本。

改用 printf 可能更好?

如果你使用:

test.tex: 
        printf '%s\n' '\input{1-slidepreamble} \changemode{handout}' > Xtest.tex