mw.*_*mw. 9 pipe hci bluetooth-lowenergy bluez intel-edison
我如何grep'hcitool lescan'的输出或者将其输出到任何东西.似乎当我从'hcitool lescan'输出任何东西时,我没有输出.
root@edison:/mnt/rtd# hcitool lescan |grep B
^Croot@edison:/mnt/rtd# hcitool lescan | tee foo
^Croot@edison:/mnt/rtd# hcitool lescan
LE Scan ...
B0:B4:48:xx:xx:xx (unknown)
B0:B4:48:xx:xx:xx xxxxxxxx
B0:B4:48:yy:yy:yy (unknown)
B0:B4:48:yy:yy:yy yyyyyyyy
Run Code Online (Sandbox Code Playgroud)
小智 6
问题是stdout缓冲.'hcitool lescan'在每个新发现的设备后都没有刷新它的输出,它只是用'\n'打印它们(至少在bluez 5.27来源中我正在看).默认情况下,如果stdout是终端,则缓冲自动设置为"line buffered",否则将其设置为buffered(请参阅此处以获取完整描述).因此,例如,当您将hcitool的输出重定向到grep时,它会被缓冲.如果你等待足够长的时间,你会看到grep的预期输出.要解决这个问题,你可以使用stdbuf来运行带有stdout line-buffering的hcitool:
$ stdbuf -oL hcitool lescan | grep B.
归档时间: |
|
查看次数: |
1661 次 |
最近记录: |