首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Shell中的Quoting

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编程中变量有无双引号探秘

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180714G0QYLS00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券