我的shell脚本在网站上显示的是完整的源代码,而不是我想要的html,这很奇怪。 我的剧本是:
#!/bin/sh
echo "Content-type: text/html"
echo ""
cat << EOF
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<title>test</title>
<link type="text/css" href="../jquery/css/redmond/jquery-ui-custom.min.css" rel="stylesheet">
<script type="text/javascript" src="../jquery/js/jquery.min.js"></script>
<script type="text/javascript" src="../jquery/js/jquery-ui-custom.min.js"></script>
<script type="text/javascript">
//<![CDATA[
if(verifiedUser == "")
window.top.location.href = "/";
//]]>
</script>
</head>
<body>
<table align="center">
<tr><td align="right">Product Name</td><td align="left">
</td></tr>
<tr><td align="right">Hardware Version</td><td align="left">
</td></tr>
<tr><td align="right">Firmware Version</td><td align="left">
</td></tr>
</table>
</body>
</html>
EOF
和.cgi文件显示的只是代码! 我的cgi文件位于html文件的同一目录中,因为主目录位于/ mnt中,所以不像往常一样放在/ home / www / cgi-bin /中。
合理的问题是什么导致这种情况?
任何建议表示赞赏!
答案 0 :(得分:1)
AFAIK,标题部分和&amp;之间的分隔符。 html数据应为空行in CRLF
format。
试试这个:
echo -e "Content-type: text/html\r"
echo -e "\r"
cat << 'EOF'
---remaining HTML data---
EOF
注意:我还将cat << EOF
更改为cat << 'EOF'
以防止任何变量扩展。如果需要变量/命令扩展,请将其还原。
答案 1 :(得分:0)
@Barmar有正确的想法 - 您的服务器很可能没有配置为运行这些文件,而是直接将文件发送到客户端。所以这是一个配置问题,而不是编程问题。