如何在 Bash 中用单引号字符串转义单引号?

我想在 Bash 中像这样显示一个字符串

I'm a student

你当然可以这样做

echo "I'm a student"

但是如何在字符串周围使用单引号来实现这一点呢?

53545 次浏览
echo 'I\'m a student'

不起作用。但以下作用:

echo $'I\'m a student'

来自 bash 的手册页:

单引号可能不会出现在单引号之间,即使在前面也是如此 用反斜杠。
....
$“ string”形式的单词被特别处理 展开为字符串,将反斜杠转义字符替换为 由 ANSI C 标准指定。

Glenn Jackman 提到的“丑陋”的解决方案实际上应该被列为顶级答案。它工作得很好,在某些情况下确实很漂亮。

'I'"'"'m a student'

这将在 I之后结束单引号字符串,然后立即启动包含单引号的双引号字符串,然后启动另一个单引号字符串。然后,Bash 将所有连续的字符串连接到一个字符串中。

漂亮!

下面的示例之所以有效,是因为转义的单引号 \'在技术上位于两个单引号参数之间

echo 'I'\''m a student'