如何在shell脚本中嵌入一些HTML?

时间:2012-09-07 20:45:42

标签: bash unix

我想在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 个答案:

答案 0 :(得分:4)

更好的选择是使用here文档语法(参见this answer):

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将终止echo命令。

技术上你可以使用单引号:

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

但是如果HTML包含'(例如撇号或属性),则会再次遇到相同的问题。这里的文件没有这样的问题。

答案 1 :(得分:1)

你需要在html中转义引号,因为你在echo的参数开头有引号。

您的终端将其解释为

<html>...<p style="

第一个参数

font-family:verdana;

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

因此您需要将p标签替换为

<p style=\"font-family:verdana;color:red;\">

答案 2 :(得分:1)

阅读Advanced Bash-Scripting Guide第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

答案 3 :(得分:-1)

您可以使用在线工具执行相同的操作:

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

相关问题