我想在 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 得到答案。