Я бы хотел вызвать утилиту командной строки из сценария ruby следующим образом:
#!/env/ruby
json = {"key" => "value that \"has\" quotes"}.to_json
`aws events put-targets --cli-input-json #{json}`
, чтобы результирующий вызов выглядел следующим образом:
aws events put-targets --cli-input-json "{\"key\": \"value that \"has\" quotes\"}"
ОднакоВ результате этой строковой интерполяции получается чистая структура json без кавычек, что приводит к ошибке в командной строке.Например.
aws events put-targets --cli-input-json {"key": "value that \"has\" quotes"}
Мне нужно правильно экранировать все кавычки, чтобы строку в командной строке можно было проанализировать как правильный json.
Я пытался выполнять манипуляции со строками, чтобы вручную экранировать кавычки с такими вещами, как:
json.gsub(/\"/,'\"')
Но это тоже не работает.
Кажется, это сложнее, чем должно быть.Как я могу отрисовать правильно экранированную строку json в вызове командной строки?
У меня есть среда rails, через которую я могу выполнить это, если есть утилиты, которые ActiveSupport предоставляет, чтобы облегчить это.