快速业务通道

如何在Unix结果中抽取想要的参数

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-05-12

大部分的Unix操作系统命令,其命令执行后都会输出比较详细的参数.但是有时候系统工程师可能不需要这么详细的信息.如date命令,其会显示时间、日期、年数等等信息.但是系统工程师在开发一些应用程序的时候,可能只需要时间信息.为此就需要利用一些工具从中抽取相关的参数信息.其实不光光是在Unix系统管理中,在其他一些程序的开发平台中也会遇到这种情况.而其他一些平台的话,他们则是通过字符串截取或者其他一些类似的方法实现.而在Unix系统中则提供了一些比较专业的命令,用来操作位置参数.如set和shift命令.

  在介绍这两个命令的使用要点之前,笔者先给大家看一个截图.如下图所示,这张图就是利用set命令来来操作位置参数.让其从date命令中抽取部分结果.这个特性不仅可以格式化显示结果,在shell中开发一些应用程序将会变得很有用.



一、set命令简介.

  在Unix系统中,set命令时一个很有用的系统命令,其可以帮助系统管理员实现很多需求,如设置环境变量等等.在这里,其主要是用来实现这支位置参数.其实在Unix系统中,有很多种方法可以用来实现在命令结果中抽取特定的参数.如可以利用外部命令cut实现从一个输出结果中截取一个字段的内容.但是,利用cut命令来实现这个功能的话,就显得有点业余了.既然Unix操作系统提供了其他一些更加专业的命令来实现这些功能,系统工程师为什么要舍近求远呢?

  其实在Unix系统中的标准shell中就提供了一些内部命令,来实现功能.其中set命令就是比较有代表性的一个命令.Set命令可以把参数赋值给$1、$2等位置参数.通过情况下,如果系统工程师要从程序的输出结果中提取某些内容则往往是利用这个命令来实现.

  二、set命令的具体实现过程以及需要注意的内容.

  在谈set命令的具体实现过程之前,笔者先跟大家介绍一些位置参数与命令显示结果之间的关系.了解他们的内在关系是系统工程师使用操作位置参数命令的前提.如上图所示,利用date命令显示出“Mon Apr 20 08:29:40 CST 2009”系统的当前时间的结果.这个结果从左到右其对应的存储位置分别为$1、$2等等,以此类推.也就是说,这个显示结果就好像其他开发程序中的数组,系统利用空格来区分字段,并把每个字段的内容依次存入到数组中.不过这里需要注意的是,其他开发程序的数组往往是从0开始.而在Unix系统中,这个位置参数则是从$1开始.为此系统工程师如果要截取第一个字段内容的话,则应该是$1而不是$0.笔者是先学C等开发语言平台,然后再学Unix系统.有了一个先入为主的观念,为此后来在使用set命令的时候,经常犯迷糊.故笔者提醒各位系统工程师,在这方面要特别注意显示结果内容与位置参数的对应关系,第一个字段对应的位置参数位$1.了解了这个内容之后,则利用set命令来操纵显示结果则就比较容易了.如上图所示,通常情况下只需要通过简单的两不就可以完成这个功能了.

  第一步:利用set命令把它的参数转换为位置参数.

  在使用这个命令之前,笔者认为系统工程师应该先明白一个道理.就是默认情况下,命令的输出结果其往往都是显示在终端中,或者通过重定向符号显示在一个特定的文件中.但是无论是哪一种显示方式,其往往不会跟位置参数关联起来.如上图中,一开始运行一个date命令时,会输出相应的时间信息.此时这个输出结果中有6个字段,但是其根本没有跟位置参数形成一一对应的关系.其只是一个简单的字符串而已.如果系统工程师要利用惭怍位置参数命令从这个结果冲抽取内容的话,则一定需要把命令的结果转换为位置参数.而set命令就是用来实现这个目的的.

如利用set ‘date’命令,就可以利用把它的参数结果转化为位置参数.如此设置之后,在显示的结果中系统就会把第一个字段赋值给位置参数$1,第二个字段赋值给位置参数$2,依次类推.在这里笔者再强

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号