Я хочу использовать обратные пометки в ruby для вызова программы. Параметр является строковой переменной, содержащей один или несколько обратных символов, т. Е. «& E? @@ A`?». Следующая команда возвращает новую метку в качестве возвращаемого значения:
echo "&E?@@A\`?" | nauty-labelg 2>/dev/null
Из программы ruby я могу вызвать ее следующим образом и получить правильный результат:
new_label = `echo "&E?@@A\\\`?" | nauty-labelg 2>/dev/null`
Я хочу добиться того же, используя переменную для метки. Поэтому мне нужно вставить три слеша в мою переменную label = "& E? @@ A`?" чтобы избежать спины. Кажется, работает следующее, хотя и не очень элегантно:
escaped_label = label.gsub(/`/, '\\\`').gsub(/`/, '\\\`').gsub(/`/, '\\\`')
Но новую переменную нельзя использовать при вызове программы:
new_label = `echo "#{escaped_label}" | nauty-labelg 2>/dev/null`
В этом случае я не получаю ответ от nauty-labelg.