服务器 频道

Unix/Linux实战:嵌入文档使用攻略

    【IT168 专稿】Shell编程是Unix/Linux服务器管理和维护的基本功,嵌入文档(Here Documents)技术是BASH脚本语言提供的一个特征,是用于在当前脚本内部处理重定向的一种手段。由于Unix从设计之初就是遵循“使用小而简单的工具进行无缝的集成”的理念,完成一项工作是需要大量的文本处理工具、流处理工具进行合作,通过标准输入、输出进行连接,将一个工具的处理结果转向另一个工具进行加工,直到得到最终的处理结果。因此,I/O重定向(redirection)是SHELL脚本的一个重要语言特征。但是,重定向技术也使整个处理过程显得凌乱、琐碎,对于初学者往往把握不好重定向的使用时机,甚至滥用重定向,而使得整个脚本里存在大量的中间文件,极大的损害了脚本语言的“优雅”程度。这是SHELL脚本学习过程中的一个常见问题。

    为解决这个问题,SHELL脚本在设计上尽可能的减少中间文件,增加了“Here Documents”这一特征。Here Documents提供了在脚本内部保存原始文件,以及在脚本内部提供重定向的机制,是精简脚本的有效方式,也是反映脚本编程水平的重要特征。在各种资料中“Here Documents”有不同的翻译名称,例如“嵌入文档”、“内部文档”、“现场文档”等等。为了兼顾字面上的相近和使用上的形象,本文使用“嵌入文档”这一名称,并通过若干实例展示这一功能的使用方法。

一、问题的提出

    事情是这样的,在8月初,笔者负责某信息学竞赛考试服务器的准备和维护工作(http://gait.buaa.edu.cn:8765),在考试结束需要将服务器上的考试成绩数据导出来,发送给竞赛主办方。服务器上安装的竞赛考试系统是在Linux下开发的专用系统,其中保存的成绩数据都是采用自定义格式的文本文件,并且由于系统开发并不是非常完善,没有提供很好的导出成绩的功能。而主办方当然希望看到一个直观的Excel文件的总成绩表。因此,需要紧急的手工处理一下,将服务器上的文本文件转换成Excel表出来。在这种情况下,当然首选的是SHELL脚本文件。

    在考试系统里面,成绩的统计结果已经可以方便的在一个统计工具的WEB页面里查看。这个统计工具当初设计的还是非常实用的,可以根据考试人员的需求,在页面上查询考试人员的成绩、分数,等等。但是这个工具当时实现时存在一些问题,它只是列出了成绩信息,而没有把考试人员的一些基本信息列出来,包括考试人员的联系方式等注册属性。但是这个信息还是要给主办方的,而且要求都显示在同一个Excel文件中。改程序已经来不及了,因此这次只能手工处理配置文件了。

    根据历次的经验,对于这种批量文本的转换处理,使用SHELL脚本的效率还是非常高的。因此立即着手进行。
0
相关文章