如何在System.cmd中使用管道?

D.R*_*D.R 1 cmd elixir

我有一个功能,可以获取所有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

Dog*_*ert 5

System.cmd只能直接调用一个程序。os:cmd将命令传递给操作系统的默认外壳,该外壳允许您使用管道。要使用进行相同的操作System.cmd,可以/bin/sh在Unix上调用:

System.cmd("/bin/sh", ["-c", "usb-devices | grep -A 1 Product="])
Run Code Online (Sandbox Code Playgroud)