[英]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.