【发布时间】:2016-04-28 06:30:49
【问题描述】:
我有一个来自另一个 stackoverflow 问题的 bash 脚本来获取我所有的串行连接设备:
#!/bin/bash
for sysdevpath in $(find /sys/bus/usb/devices/usb*/ -name dev); do
(
syspath="${sysdevpath%/dev}"
devname="$(udevadm info -q name -p $syspath)"
[[ "$devname" == "bus/"* ]] && continue
eval "$(udevadm info -q property --export -p $syspath)"
[[ -z "$ID_SERIAL" ]] && continue
echo "{name: '/dev/$devname', id_serial: '$ID_SERIAL'}"
)
done
我试图将它们解析为对象数组,以便在 Rails 视图上迭代和显示它们。输出是这样的:
{name: '/dev/input/event16', id_serial: 'Logitech_USB_Receiver'}
{name: '/dev/input/mouse2', id_serial: 'Logitech_USB_Receiver'}
{name: '/dev/hidraw0', id_serial: 'Logitech_USB_Receiver'}
{name: '/dev/usb/hiddev3', id_serial: 'Logitech_USB_Receiver'}
{name: '/dev/input/event17', id_serial: 'Logitech_USB_Receiver'}
{name: '/dev/hidraw1', id_serial: 'Logitech_USB_Receiver'}
{name: '/dev/input/event15', id_serial: 'SunplusIT_INC._Integrated_Camera'}
{name: '/dev/media0', id_serial: 'SunplusIT_INC._Integrated_Camera'}
{name: '/dev/video0', id_serial: 'SunplusIT_INC._Integrated_Camera'}
在 Rails 控制台中,这是输出:
2.2.4 :001 > `./lib/scripts/get_serial.sh`
=> "{name: '/dev/input/event16', id_serial: 'Logitech_USB_Receiver'}\n{name: '/dev/input/mouse2', id_serial: 'Logitech_USB_Receiver'}\n{name: '/dev/hidraw0', id_serial: 'Logitech_USB_Receiver'}\n{name: '/dev/usb/hiddev3', id_serial: 'Logitech_USB_Receiver'}\n{name: '/dev/input/event17', id_serial: 'Logitech_USB_Receiver'}\n{name: '/dev/hidraw1', id_serial: 'Logitech_USB_Receiver'}{name: '/dev/media0', id_serial: 'SunplusIT_INC._Integrated_Camera'}\n{name: '/dev/video0', id_serial: 'SunplusIT_INC._Integrated_Camera'}\n"
所以我试图在我的控制器中像这样解析它:
def index
@devices = `./lib/scripts/get_serial.sh`.strip.gsub(" ","").split("\n")
end
如果我这样做@devices[0],结果是:=> "{name:'/dev/input/event16',id_serial:'Logitech_USB_Receiver'}"。
最后,在视图中:
<ul>
<% @devices.each do |device| %>
<li><%= device %> </li>
<% end %>
</ul>
显示所有设备,但如果我这样做<%= device.name %> 我会得到一个错误或<%= device['name'] %> 我会得到“名称”这个词。
我的问题很简单。有没有更好的方法来执行此操作并将:name 和:id_serial 作为典型变量处理(迭代数组并打印它们)?
【问题讨论】:
标签: ruby-on-rails ruby bash