我的问题针对Zsh,但是从我尝试过的角度来看,它似乎也适用于POSIX shell和bash:
我想写一个包含文字$
字符(不打算插入)和单引号的字符串。由于Zsh手册页中有关QUOTING的章节介绍了单引号字符串:
可以使用\'转义符在字符串中包含文字
'
字符。
我尝试过类似的操作(在交互式zsh中,然后在脚本中进行操作):
echo 'a$b\'c'
我希望它会显示a$b'c
,但是zsh告诉我我的报价不公开。
我知道我可以将其用作解决方法
echo 'a$'"b'C"
但是我仍然想知道为什么我最初的尝试失败了。
答案 0 :(得分:-1)
问题是我对手册页的解释,我必须责怪自己,我在引用该页时遗漏了一部分我认为不重要的部分,但实际上与这种情况有关。再次是手册页的 full 句子:
包含在“ $”和“''之间的字符串的处理方式与 打印内置变量的字符串参数,结果字符串为 被视为完全引用。文字'''字符可以是 使用'\'转义符包含在字符串中。
由于Zsh有两种写单引号的字符串的方式(一种在bash中,引号以'
开头,另一种以$'
开头),所以我理解之间,这部分意思是“在$'
和'
引用的字符串中,\'
转义起作用。
此解释不正确。手册页的含义是,用引号引起来的字符串,该字符串以以$'
开头和以结束以'
开头,可以使用该转义符。
因此我的示例可以写为
echo $'a$b\'c'