shell script编程应用—写网页/报告生成器

本文介绍如何利用Shell Script编写一个简单的报告生成器,从创建最小的HTML文档开始,逐步添加数据,包括常量和变量的使用,以及通过Here文档来插入内容。通过运行脚本,可以在浏览器中查看生成的网页。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用shell script启动一个项目-报告生成器:从网页开始

第一阶段:最小的文档

下面是一个最简单的HTML文档:

<HTML>
        <HEAD>
                <TITLE>Page Title</TITLE>
                </HEAD>
                <BODY>
                        Page body.
                </BODY>
        </HTML>

定义其文件名为:foo.html。在主机中的位置为foo_path(查看位置后,将实际位置替换该变量即可)。
在浏览器中输入:“file:///foo_path/foo.html”这个URL地址即可查看文件。
再创建一个名为:sys_info_page.sh的文件。并输入以下程序:

#!/bin/bash
#program to output a system information page
echo "<HTML>
        <HEAD>
                <TITLE>system information report</TITLE>
                </HEAD>
                <BODY>
                        <H1>system information report</H1>
                </BODY>
        </HTML>"

保存文件。
在命令行输入:

chmod 755 sys_info_page.sh
./sys_info_page.sh

即可看到这个 HTML文档中的文本显示在屏幕上。
如何使用浏览器查看网页呢?
在命令行输入:

./sys_info_page > sys_info_page.html
open sys_info_page.html(基于mac)
或:
firefox sys_info_page.html(基于linux)
即可。

第二阶段:加入一些数据

常量和变量

shell script中,常用大写字母表示常量,用小写字母来表示变量。我们将sys_info_page.sh文件稍作修改:增加一个常量来代替以后会多次出现的字符串等,这样在需要修改的时候,只需要在常量的定义处进行修改即可。

#!/bin/bash
#program to output a system information page
TITLE="system information report FOR $HOSTNAME"
echo "<HTML>
        <HEAD>
                <TITLE>$TITLE</TITLE>
                </HEAD>
                <BODY>
                        <H1>$TITLE</H1>
                </BODY>
        </HTML>"

注意到代码中的$HOSTNAME,HOSTNAME是你本机的名称。
下面,把报告创建的日期、时间以及报告创建者的用户名加入代码中:

使用here文档添加内容

here文档是I/O重定向的另外一种方式,我们在脚本中嵌入正文文本,然后将其输出到一个命令的标准输入中,其工作方式如下:

command << token
text
token

其中,command是接受标准输入的命令名,token用来指示嵌入文本的结尾。现在使用here文档来改写我们的sys_info_page.sh文档。

#!/bin/bash
#program to output a system information page
CURRENT_TIME=$(date +"%x %r %Z")
TIME_STAMP="Generated $CURRENT_TIME, by $USER"
TITLE="system information report FOR $HOSTNAME"

cat << _EOF_
<HTML>
        <HEAD>
                <TITLE>$TITLE</TITLE>
                </HEAD>
                <BODY>
                        <H1>$TITLE</H1>
                        <P>$TIME_STAMP<P>
                </BODY>
        </HTML>
_EOF_

这里用cat和EOF字符串替换echo达到了一样的效果。这样有什么好处呢?
如下图:
这里写图片描述
我们可以看到:
这里shell将引号看做了普通字符输出。这样以来,我们就可以在here文档中随意嵌入引号。
另外,here文档接受标准输入和任何命令一起使用,这里,我们向ftp程序传递一系列的命令,从而从远程ftp服务器上获取一个文件。

#!/bin/bash
#script to retrieve a file via FTP
FTP_SERVER=ftp.n1.dabian.org
FTP_PATH=/debian/dists/lenny/main/installer-i386/current/images/cdrom
REMOTE_FILE=debian-cd_info.tar.gz

ftp -n << EOF
open $FTP_SERVER
user anonymous me@linuxbox
cd $FTP_PATH
hash
get $REMOTE_FILE
bye
EOF
ls -l $REMOTE_FILE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值