当我尝试通过perl-CGI执行shell脚本时,它提供的结果却是一行.但是当我运行shell脚本时,它会以正确的格式显示结果.请指导我如何使它正确.
下面是perl代码
#!/usr/bin/perl use CGI qw(:standard); exec("sh /tmp/att.sh -t v2 --help"); print end_html
请帮我解决一下.
在您之前添加exec
:
print "Content-type: text/plain\n\n";
您可以安全地删除print end_html;
它,因为它永远不会被执行.
事实上,任何事情exec
都不会被执行.如果你想在shell调用之后执行更多Perl system
或者其他方法(请参阅此链接).
如果你想在HTML中嵌入你的输出,你必须得到更复杂一点,并使用反引号或打开管道,因为你想要在打印之前捕获输出和HTML转义.
use CGI qw/escapeHTML/; print "Content-type: text/html\n\n"; printf "<pre>%s</pre>\n", escapeHTML(`sh /tmp/att.sh -t v2 --help`);
编辑(根据@ysth的要求):是什么 <pre>
每个W3C文档pre
PRE元素告诉可视用户代理所包含的文本是"预先格式化"的.处理预格式化文本时,可视用户代理:
可以保持白色空间完整.
可以使用固定间距字体渲染文本.
可能会禁用自动换行.
不得禁用双向处理.