簡體   English   中英

為shell轉義單引號

[英]Escaping single quotes for shell

我將帶有 JSON 的 ENV 傳遞到 Docker。 我需要在外殼上使用字符串作為參數。 在 shell 中,轉義單引號的正確方法是使用'\\'' 所以, "Tom's Market"變成了"Tom'\\''s Market"如下所示:

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"]

我不知道那里發生了什么。 有人能幫我嗎?

好吧,反斜杠是您在 ruby​​ 字符串中轉義的方式。 要逃避它,您需要另一個反斜杠。

通常是添加反斜杠直到它起作用

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

Shellwords.escape的結果旨在不加引號地使用

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM