我有一个makefile,其中一个动作要求我将一个字符串\noslide
写入名为modeset.txt的文本文件中,所以我使用了#echo;#echo;#。虽然 -E 标志应该禁用反斜杠转义的解释 echo会将标志作为sting的一部分处理(参见下面的输出)。
以下是我的makefile中的精简片段:
.PHONY: target all
all: target
target:
echo -E "\noslide" > modeset.txt
clean:
rm -f modeset.txt
modeset.txt文件的内容显示echo将-E作为字符串的一部分。
-E
oslide
但是在shell中,echo -e和echo -E按预期工作,那么makefile环境会导致什么呢?
操作系统:仅来自官方渠道的Vanilla Debian 8。答案 0 :(得分:1)
echo
不可移植。许多不同的版本存在不同的行为,即使在同一系统中,也可能取决于您使用的shell(即shell内置echo
与系统的/bin/echo
)
如果您想要显示除简单文字后跟换行符以外的任何内容,则应使用printf
而不是echo
:
target:
printf '\\noslide\n' > modeset.txt