码迷,mamicode.com
首页 > 系统相关 > 详细

Shell中的Quoting

时间:2018-07-14 14:41:31      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:扩展   http   img   bsp   fan   中间   最佳实践   其它   ges   

Shell中Quoting(引用),可以用来移除字符的特殊意思,令其保留字面含义;可以用来进行多种Shell Expansion。


有3种quoting机制:转义字符,单引号,和双引号。



1. 转义字符

非引用的反斜杠‘\’称为转义字符,它保留了后面单个字符的字面含义(移除了特殊意义)。有个例外,反斜杠作为输入行的最后一个字符,Shell将其视为续行符,删除随后的换行符,不会将该换行符作为参数的分隔符,就像这个字符没出现过。



2. 单引号

在单引号‘'’中的所有字符,都会保留它们的字面含义。注意,一个单引号不能出现在两个单引号中间,即使其前面有反斜杠也不行。



3. 双引号

双引号中除了4个字符’$‘,‘`’,‘\’和‘!’外,其它都保持字面含义(注,Shell在POSIX模式下,‘!’也保持字面含义)。 


字符‘$’和‘`’会进行Shell Expansion(如变量扩展,命令替换等)。


反斜杠‘\’在‘$’,‘`’,‘"’,‘\’,和newline前面时,其会被移除掉,后面的字符不变,表示字面含义。


在可History expansion时,’!‘前面需添加‘\’,才能抑制该扩展,且’\‘不会被移除。



另,了解下特殊的ANSI-C Quoting,形式为$'string',string中的反斜杠‘\’和其后的字符会按照ANSI C的标准转义,结果就像‘$’符号不存在,只使用了单引号。如何使用ANSI-C Quoting,详见Bash编程中变量有无双引号探秘


若感兴趣可关注订阅号”数据库最佳实践”(DBBestPractice).

技术分享图片

Shell中的Quoting

标签:扩展   http   img   bsp   fan   中间   最佳实践   其它   ges   

原文地址:http://blog.51cto.com/coveringindex/2142102

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!