2011-11-24 110 views
38

我要顯示這樣如何在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' –

回答

70
echo 'I\'m a student' 

不起作用。但以下工作:

echo $'I\'m a student' 

從慶典的手冊頁:

單引號可能無法單引號之間出現,前面有反斜槓 時也是如此。形式$ '字符串'
....
詞會被特殊對待。字 擴展爲字符串,反斜槓轉義字符替換爲由ANSI C標準指定的 。

+3

一個醜陋的形式是:'「我」「」‘碩士生’ –

+32

爲什麼,bash,* whyyyy *? –

+2

'echo $'我是一名學生!'=>'!':event not found',這不是一個真實的單引號字符串,在bash中,它應該避免任何解釋。 – regilero

33

格倫傑克曼提到的「醜陋」解決方案實際上應該被列爲頂級答案。它運作良好,在某些情況下實際上很漂亮。

'I'"'"'m a student' 

這結束I再經過單引號字符立即啓動包含一個單引號雙引號字符串,然後啓動另一個單引號字符。 Bash然後將所有連續的字符串連接成一個。

美麗!下面

+18

我認爲我們對美的定義有所不同......;) –

0

的例子工程,因爲轉義單引號\'在技術上是兩個單引號參數

echo 'I'\''m a student' 
相關問題