1

我想在 shell 脚本中包含一些 HTML。这是我尝试过的:

(
echo "<html> 
<head>
<title>HTML E-mail</title>
</head>
<body>
<p style="font-family:verdana;color:red;">
This text is in Verdana and red</p>
</body>
</html>"
)>pkll.htm

但是,它没有将 HTML 写入文件,而是给了我一些错误:

> bash: color:red: command not found bash: > This text is in Verdana and
> red</p </body> </html>: No such file or directory

我怎样才能做到这一点?

4

4 回答 4

4

更好的选择是使用此处的文档语法(请参阅此答案):

cat << 'EOF' > pkll.htm
<html> 
  <head>
    <title>HTML E-mail</title>
  </head>
  <body>
    <p style="font-family:verdana;color:red;">
      This text is in Verdana and red
    </p>
  </body>
</html>
EOF

您的尝试失败了,因为 HTML 中的双引号终止了您环绕它的双引号,并导致<>s 被视为重定向并且;s 终止echo命令。

从技术上讲,您可以使用单引号:

( 
echo '<html> 
<head>
<title>HTML E-mail</title>
etc ...'
)>pkll.htm

但是如果 HTML 包含 a ',例如撇号或在属性中,您就会再次遇到同样的问题。这里的文档没有这样的问题。

于 2012-09-07T20:51:27.410 回答
1

您需要转义 html 中的引号,因为您在要回显的参数的开头有一个引号。

您的终端将其解释为

<html>...<p style="

第一个论点

font-family:verdana;

作为第二个参数,其余的作为其他命令,因为你有一个分号。

所以你需要将 p 标签替换为

<p style=\"font-family:verdana;color:red;\">
于 2012-09-07T20:54:36.287 回答
1

阅读高级 Bash 脚本指南第 19 章。这里是文档。http://tldp.org/LDP/abs/html/here-docs.html

cat << 'EOF' > pkll.htm
<html> 
<head>
<title>HTML E-mail</title>
</head>
<body>
<p style="font-family:verdana;color:red;">
This text is in Verdana and red</p>
</body>
</html>
EOF
于 2012-09-07T20:55:03.653 回答
-1

您可以使用在线工具来做同样的事情:

http://togotutor.com/code-to-html/shell-to-html.php

于 2015-05-05T22:28:02.303 回答