2015-02-05 109 views
0

我將帶有JSON的ENVs傳遞給Docker。我需要在shell上使用一個字符串作爲參數。在shell中,轉義單引號的正確方法是使用'\''。所以,"Tom's Market"變得"Tom'\''s Market"爲:轉義shell的單引號

docker run -it -e FOO='["Tom'\''s Market"]' ... 

Ruby的Shellwords似乎沒有這樣做。

Shellwords.shellescape('["Tom\'s Market"]') 
#=> \[\"Tom\'s\ Market\"\] 

所以我想用簡單的查找/替換:

'["Tom\'s Market"]'.gsub("'", "'\\''") 
#=> ["Tom's Market"]'s Market"] 

我不知道發生了什麼事情在那裏。有人能幫我嗎?

回答

3

好吧,反斜槓是你如何在紅寶石串中逃脫。爲了逃避它,你需要另一個反斜槓。

的通常是添加反斜線,直到它的工作原理

puts %q{["Tom's Market"]}.gsub("'", "'\\\\''") 
# ["Tom'\''s Market"] 
+0

非常感謝您! – 2015-02-06 15:58:06

+2

儘管我討厭承認它,但至少有一次在我的生活中,我已經添加了反斜槓,直到它工作,... – ioquatix 2016-10-20 09:27:23