如果我在终端上运行命令,则会给出IP地址值
ip route get 8.8.8.8 | grep -oP '(?<=src )(\d{1,3}.){4}'
但是当我使用&#39; 2&gt;&amp; 1&#39;然后它返回空字符串:
output = ''
IO.popen("ip route get 8.8.8.8 | grep -oP '(?<=src )(\d{1,3}.){4}' 2>&1", 'r+') do |f|
output = f.read.strip
end
puts output.inspect
请指导我了解上述情况。 我需要添加哪些修改来获取IP地址。
答案 0 :(得分:2)
与重定向无关。在Ruby中,必须转义字符串中的反斜杠。只需将\
替换为\\
:
output = ''
IO.popen("ip route get 8.8.8.8 | grep -oP '(?<=src )(\\d{1,3}.){4}' 2>&1", 'r+') do |f|
output = f.read.strip
end
puts output.inspect