有没有一种简单的方法可以将一些 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 解释!
为特殊字符
另外,使用-e
withecho
以便反斜杠转义,例如\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
。