将 HTML 回显到文本文件中

将 HTML 回显到文本文件中

有没有一种简单的方法可以将一些 HTML 代码回显到文本/HTML 文件中?

我正在尝试做:

echo "<!DOCTYPE html>\n<html>\n\t<body>\n\t\t<h1>Hello World!</h1>\n\t</body>\n</html>" > index.html

但得到:

-bash: !DOCTYPE: event not found

答案1

使用单引号,因为 bash 解释!为特殊字符

另外,使用-ewithecho以便反斜杠转义,例如\n被解释

echo -e '<html>\n<html>\n\t<body>\n\t\t<h1>Hello World!</h1>\n\t</body>\n</html>' > index.html

答案2

您可以通过使用单引号而不是双引号来解决此问题。所以,这应该按预期工作 -

echo '<!DOCTYPE html>\n<html>\n\t<body>\n\t\t<h1>Hello World!</h1>\n\t</body>\n</html>' > index.html

当您使用单引号时,bash 不会尝试解释特殊字符,而只是保留文字字符串。

答案3

bash您正在使用触发历史扩展!。使用 关闭历史扩展set +H,使用单引号字符串,或者使用此处文档来编写 HTML:

$ cat <<'END_HTML' >index.html
<!DOCTYPE html>
<html>
        <body>
                <h1>Hello World!</h1>
        </body>
</html>
END_HTML

或者,如果您想按原样写出这些编码的制表符和换行符:

$ cat <<'END_HTML' >index.html
<!DOCTYPE html>\n<html>\n\t<body>\n\t\t<h1>Hello World!</h1>\n\t</body>\n</html>
END_HTML

历史扩展不会在 中的此处文档中触发bash

相关内容