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

问题描述:

我要显示这样如何在Bash中单引号字符串中单引号转义?

I'm a student 

当然Bash中的字符串,你可以做这样的

echo "I'm a student" 

但如何做到这一点的同时使用字符串周围单引号?

+4

对不起之间,有没有办法放置一个单引号在单引号之间。见http://www.gnu.org/software/bash/manual/bashref.html#Special-Parameters一节'3.1.2.2单Quotes' –

echo 'I\'m a student' 

不起作用。但以下工作:

echo $'I\'m a student' 

从庆典的手册页:

单引号可能无法单引号之间出现,前面有反斜杠 时也是如此。形式$ '字符串'
....
词会被特殊对待。字 扩展为字符串,反斜杠转义字符替换为由ANSI C标准指定的 。

+3

一个丑陋的形式是:'“我”“”‘硕士生’ –

+32

为什么,bash,* whyyyy *? –

+2

'echo $'我是一名学生!'=>'!':event not found',这不是一个真实的单引号字符串,在bash中,它应该避免任何解释。 – regilero

格伦杰克曼提到的“丑陋”解决方案实际上应该被列为顶级答案。它运作良好,在某些情况下实际上很漂亮。

'I'"'"'m a student' 

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

美丽!下面

+18

我认为我们对美的定义有所不同......;) –

的例子工程,因为转义单引号\'在技术上是两个单引号参数

echo 'I'\''m a student'