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

http://tech.ddvip.com   2007年09月25日    社区交流

内容摘要:Shell编程是Unix/Linux服务器管理和维护的基本功,嵌入文档(Here Documents)技术是BASH脚本语言提供的一个特征,是用于在当前脚本内部处理重定向的一种手段……

  fashion.

  为了便于说明,这段说明翻译成中文如下所示:

  #man bash

  Here Documents(嵌入文档)

  Here Documents作为重定向的一种方式,指示shell从源文件的当前位置开始读取输出,直 到遇到只包含一个单词的文本行时结束。在该过程中读到的所有文本行都将作为某一个命令的标准输入而使用。

  here-documents的使用形式: <<[-]word

  here-document

  delimiter

  Shell将不对word 进行任何参数和命令替换、表达式计算,以及文件名扩展。如果在word中出现被引号包含的字符,则delimiter 将被视为在word中去除引号所包含部分的结果,并且here-document中的文本将不被扩展。如果word不包含引号,则here-document中的所有文本都将进行常规的参数扩展、命令替换、表达式计算。在后一种情况下,字符序列将被忽略, 并且必须对元字符, $, 和`使用进行转义。

  如果重定向操作符是<<-, 则输入行和delimiter行中的所有前缀TAB字符都将被忽略。这样源代码中的here-documents就可以按照优雅的嵌入方式进行对齐。

  3.2 技术的应用

  下面我们考察一下在Shell脚本中使用Here Documents的必要性所在。Shell脚本对于文本文件的处理是非常方便的,因此实现本文所要完成的工作还是比较简单的,只需对所有文件进行一次循环过程。但是问题在于,从①-②,②-③的每一部,实际上都是使用cut、echo、cat等进行流处理,每个处理过程的输出作为下一步骤的输出。这里面自然的要使用重定向的方法。在以前对BASH用的不熟的时候,往往笨拙的使用临时文件存储这些中间结果。比如: 00000004.REG -> 00000004.cut -> 00000004.line -> all.txt。这样处理的过程中,代码显的非常杂乱,而且有时候不得不写出多个脚本来处理重定向,这种情况使得问题更为加重。

来源:IT168    作者:靳国杰    责编:豆豆技术应用

正在加载评论...