快速业务通道

Unix利用转义和引用来管理元字符

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-24
元字符以外,还可以采用引用这个功能来解决.简单的说,就是将一个命令参数放置在一对引号之内,则这个引号之内内容如果有元字符的话,则这些元字符将不起作用.那么既然转义功能已经可以解决元字符的问题,系统还提出了一个引用的解决方案,是否多次一举呢?其实不然.当一个命令行中含有多个元字符的时候,需要在每个元字符前面加一个转移字符.为此此时如果采用转义字符来解决这个元字符的问题时,会非常的繁琐.此时如果采用引用机制来解决元字符的问题时,可能会更加的理想.如现在系统工程师希望能够在屏幕上打出如下信息(这是一个共享文件的路径):192.128.11.3shareITsoftwarepdf.如果采用转移字符的话,该如何写呢?这个输出结果中有四个元字符(转义字符),为此管理员不得不用四个转移字符来处理.即要写成echo 192.128.11.3\share\IT\software\pdf.这显然非常的麻烦.遇到这种情况时,如果采用引用的话,显然会更加的合适.如采用引用机制,只需要将这个命令写为即可:

  echo ‘192.128.11.3shareITsoftwarepdf’

  将一大串命令采用单引号因起来.则系统会将命令行中的一些元字符都当作普通字符来对待.即不需要为每一个元字符采用转移字符.显然这个引用解决方案要比采用转义字符来解决要方便的多.

在采用引用机制来处理元字符时,需要注意跟双引号的区别.如现在有如下三个命令echo $JAVA_HOME、echo ‘$JAVA_HOME’、 “echo $JAVA_HOME”.其中$JAVA_HOME表示应用程序Java的环境变量.此时如果系统工程师依次运行上面这三个命令,会有什么结果呢?第一个命令会正常显示Java的环境变量;第二个命令直接显示$JAVA_HOME,即已经将元字符$当作普通字符来对待.第三个命令的话仍然显示Java的环境变量.可见双引号与单引号在引用机制上,还是有所不同的.那么他们到底有什么差异呢?总的来说,系统工程师需要注意如下内容.单引号会保护里面所有的元字符,即遇到元字符时会告诉系统当作普通字符来对待.但是如果采用了双引号,则系统会将单引号之间的内容解释为命令行.如会将$当作环境变量的前缀等等.其实单引号与双引号还有一种相互保护的作用.即双引号保护其中的单引号,而单引号保护其中的双引号.无论是双引号还是单引号本身就都是元字符,可以通过引用机制来进行保护.不过在遇到单引号与双引号(都当作普通字符)都存在的情况下,笔者建议还是采用转移字符来保护单引号或者双引号为好.这可以避免误解,也容易提高代码的可读性.同理,如果要将转移字符 当作普通字符来实用的话,那么最好也是利用单引号来保护这个转移字符,而不是利用转移字符来保护转移字符.这些虽然不影响实际的应用,但是却是提高代码可读性的有效手段.

  从以上的分析中可以看出,虽然转移字符与引用机制等等都可以将元字符当作普通字符来对待.但是,两者在实现的方法上还是有一定的差异.为此最好能够根据应用场合的不同,在选择合适的解决方案.一般来说,两者的差异只是实现方法上的差异,在具体的功能上没有区别.不过为了代码的易读性上考虑,选择具体的解决方案是还需要慎重.不过总的来说,系统工程师同时掌握这两种方法.然后根据不同的情况现在合适的解决方法.如果光掌握一种解决措施,可能不能够解决所有跟元字符相关的问题.

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号