Как я могу использовать конвейер в System.cmd? - PullRequest
0 голосов
/ 03 мая 2018

У меня есть функция, которая получает информацию обо всех 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?

1 Ответ

0 голосов
/ 03 мая 2018

System.cmd может вызвать только одну программу напрямую. os:cmd передает команду оболочке по умолчанию операционной системы, которая позволяет вам использовать каналы. Чтобы сделать то же самое с System.cmd, вы можете позвонить /bin/sh, если вы используете Unix:

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