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

hiz5n14c  于 2022-12-26  发布在  Linux
关注(0)|答案(4)|浏览(290)

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

I'm a student

你当然可以这样做

echo "I'm a student"

但是如何在字符串两边使用单引号来实现呢?

abithluo

abithluo1#

echo 'I\'m a student'

不起作用。但以下方法起作用:

echo $'I\'m a student'

来自bash的手册页:
单引号之间不能出现单引号,即使前面有反斜杠。

格式为**$'string '**的单词将被特殊处理。该单词将扩展为string,并按照ANSI C标准的规定替换反斜杠转义字符。

jobtbby3

jobtbby32#

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

'I'"'"'m a student'

这将在I之后结束单引号字符串,然后立即开始一个包含单引号的双引号字符串,然后开始另一个单引号字符串。
漂亮!

iqih9akk

iqih9akk3#

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

echo 'I'\''m a student'
mspsb9vt

mspsb9vt4#

另一种解决方法是使用printf而不是echo,并用\x27转义所需的单引号:

printf 'I\x27m a student!\n'

相关问题