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

来源:互联网 发布:导购网源码 编辑:程序博客网 时间:2024/05/13 22:58

使用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 pageecho "<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 pageTITLE="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 << tokentexttoken

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

#!/bin/bash#program to output a system information pageCURRENT_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 FTPFTP_SERVER=ftp.n1.dabian.orgFTP_PATH=/debian/dists/lenny/main/installer-i386/current/images/cdromREMOTE_FILE=debian-cd_info.tar.gzftp -n << EOFopen $FTP_SERVERuser anonymous me@linuxboxcd $FTP_PATHhashget $REMOTE_FILEbyeEOFls -l $REMOTE_FILE
0 0
原创粉丝点击