分享

grep 后加单引号、双引号和不加引号的区别

 橙zc 2014-07-27


单引号:



 



可以说是所见即所得:即将单引号内的内容原样输出,或者描述为单引号里面看到的是什么就会输出什么。单引号''是全引用,被单引号括起的内容不管是常量还是变量者不会发生替换。



 



双引号:



 



把双引号内的内容输出出来;如果内容中有命令、变量等,会先把变量、命令解析出结果,然后在输出最终内容来。双引号""是部分引用,被双引号括起的内容常量还是常量,变量则会发生替换,替换成变量内容。



 



不加引号:



 



不会将含有空格的字符串视为一个整体输出如果内容中有命令、变量等,会先把变量、命令解析出结果,然后在输出最终内容来,如果字符串中带有空格等特殊字符,则不能完整的输出,需要改加双引号,一般连续的字符串,数字,路径等可以用。



 



使用规则:



 



一般常量用单引号''括起,如果含有变量则用双引号""括起。



 



最大不同:



 



单引号与双引号的最大不同在于双引号仍然可以保有变数的内容,但单引号内仅能是一般字



元,而不会有特殊符号



 



使用举例:



 



“”号里面遇到$\等特殊字符会进行相应的变量替换



‘’号里面的所有字符都保持原样



对于字符串,两者相同



匹配模式也大致相同



但有一些区别非常容易混淆



 



grep "$a" file        #引用变量a,查找变量a的值



 



grep '$a' file        #查找“$a”字符串



 



grep "\\" file        #grep: Trailing backslash(不知原因)



 



grep '\\' file        #查找‘\’字符



 



1美元符



 



2反斜杠



 



3反引号



 



4" 双引号



这四个字符在双引号中是具有特殊含义的,其他都没有,而单引号使所有字符都失去特殊含义



 



如果用双引号,查找一个\,就应该用四个\:



grep "\\\\" file 这样就对了,这样等同于:



grep '\\' file



 



第一条命令shell把四个\,转义成2\传递给grepgrep再把2\转义成一个\查找



第二条命令shell没转义,直接把2\传递给grepgrep再把2\转义成一个\查找



其实grep执行的是相同的命令



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多