我有一个功能,它可以获取所有USB连接设备的信息。
connected_devices = :os.cmd('usb-devices | grep -A 1 Product=')
当我使用:os.cmd
时,它运行正常。但是,由于:os.cmd
没有返回错误代码,因此我想使用System.cmd
来更好地处理错误。
connected_deivces = System.cmd("usb-devices", ["|", "grep", "-A", "1", "Product="])
所以我尝试改变上面的功能,但它不会在管道之后执行命令。
如何使用System.cmd
管道执行命令?
答案 0 :(得分:3)
System.cmd
只能直接调用一个程序。 os:cmd
将命令传递给操作系统的默认shell,允许您使用管道。要对System.cmd
执行相同的操作,如果您使用的是Unix,则可以调用/bin/sh
:
System.cmd("/bin/sh", ["-c", "usb-devices | grep -A 1 Product="])