在单引号中包含单引号

时间:2020-04-08 07:39:53

标签: shell zsh

我的问题针对Zsh,但是从我尝试过的角度来看,它似乎也适用于POSIX shell和bash:

我想写一个包含文字$字符(不打算插入)和单引号的字符串。由于Zsh手册页中有关QUOTING的章节介绍了单引号字符串:

可以使用\'转义符在字符串中包含文字'字符。

我尝试过类似的操作(在交互式zsh中,然后在脚本中进行操作):

echo 'a$b\'c'

我希望它会显示a$b'c,但是zsh告诉我我的报价不公开。

我知道我可以将其用作解决方法

echo 'a$'"b'C"

但是我仍然想知道为什么我最初的尝试失败了。

1 个答案:

答案 0 :(得分:-1)

问题是我对手册页的解释,我必须责怪自己,我在引用该页时遗漏了一部分我认为不重要的部分,但实际上与这种情况有关。再次是手册页的 full 句子:

包含在“ $”和“''之间的字符串的处理方式与 打印内置变量的字符串参数,结果字符串为 被视为完全引用。文字'''字符可以是 使用'\'转义符包含在字符串中。

由于Zsh有两种写单引号的字符串的方式(一种在bash中,引号以'开头,另一种以$'开头),所以我理解之间,这部分意思是“在$''引用的字符串中,\'转义起作用。

此解释不正确。手册页的含义是,用引号引起来的字符串,该字符串以$'开头和以结束'开头,可以使用该转义符。

因此我的示例可以写为

 echo $'a$b\'c'