当我尝试通过perl-CGI执行shell脚本时,它为我提供了结果,但所有这些都在一行中。但是当我运行shell脚本时,它会以正确的格式显示结果。请指导我如何做好。
以下是perl代码
#!/usr/bin/perl
use CGI qw(:standard);
exec("sh /tmp/att.sh -t v2 --help");
print end_html
请帮我解决。
答案 0 :(得分:6)
在exec
:
print "Content-type: text/plain\n\n";
您可以安全地删除print end_html;
,因为它永远不会被执行。
事实上,exec
之后的任何事情都不会被执行。如果你想在shell调用之后执行更多Perl,请查看system
或其他一些方法(参见this link)。
如果你想在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>
PRE元素告诉可视用户代理所包含的文本是“预先格式化”的。处理预先格式化的文本时,可视用户代理:
- 可以保持空白不变。
- 可以使用固定间距字体呈现文字。
- 可能会禁用自动换行。
- 不得禁用双向处理。