Laravel Asked: 2022-04-27 08:36:12 +0800 CST2022-04-27 08:36:12 +0800 CST 2022-04-27 08:36:12 +0800 CST 如何在 recsel 中转义撇号? 772 让我们考虑以下recfile Name: John Text: It's me! Name: Jane Text: Hello 以下命令可以完美地选择第二条记录 recsel -e "Text = 'Hello'" test.rec 但是如何选择第一个? recsel -e "Text = 'It\'s me!'" test.rec 即使根据文档(第 3.5.2.2 节字符串文字)它是正确的语法,它也不起作用。 我正在使用 GNU Recutils 1.9 版。 gnu 1 个回答 Voted Best Answer steeldriver 2022-04-27T09:36:36+08:002022-04-27T09:36:36+08:00 这实际上是 shell 引用的问题,而不是recsel具体的问题。 记录文本中的!增加了额外的复杂性(至少在交互式 bash shell 中) - 没有它,您可以在双引号内使用转义的双引号,这会删除内部任何单引号的特殊含义。关闭历史扩展来演示: $ set +o histexpand $ recsel -e "Text = \"It's me!\"" test.rec Name: John Text: It's me! 否则,您可以使用外部单引号,围绕文字单引号关闭和重新打开它们: $ recsel -e 'Text = "It'\''s me!"' test.rec Name: John Text: It's me!
这实际上是 shell 引用的问题,而不是
recsel
具体的问题。记录文本中的
!
增加了额外的复杂性(至少在交互式 bash shell 中) - 没有它,您可以在双引号内使用转义的双引号,这会删除内部任何单引号的特殊含义。关闭历史扩展来演示:否则,您可以使用外部单引号,围绕文字单引号关闭和重新打开它们: