此处为bash noob。试图为家庭助理编写一行BLE标签存在检测器(RPI-3上内置的BLE模块大大降低了家庭助理的速度)。
需要一些帮助来完成这项工作:
$ timeout -s SIGINT 5s hcitool -i hci0 lescan | grep 00:00:00:00:00:00
正在发生的(或应该发生的):
- hcitool运行5s(在优雅地杀死5s之后)
- 输出通过管道传输到grep,用于检测一个特定的MAC
- 命令返回匹配的mac
但是,此命令不返回任何内容,只返回状态代码130($echo$?)
然而,这是有效的:
$ sudo timeout -s SIGINT 5s hcitool -i hci0 lescan | grep 00:00:00:00:00:00
是的,我已经设置了这篇文章中描述的缺失的帽子:https://unix.stackexchange.com/questions/96106/bluetooth-le-scan-as-non-root
由于设置的功能,这也可以正常工作(返回检测到的设备列表,在5秒钟后优雅地终止:
$ timeout -s SIGINT 5s hcitool -i hci0 lescan
我做错了什么?为什么管道到grep似乎需要root?(因为我知道不应该)
致问候,
Stephan
Ah解决了它;)
按照执行顺序:)。使用sudo与使用效果相同
$ (timeout -s SIGINT 5s hcitool -i hci0 lescan | grep 00:00:00:00:00:00)