2016-03-09 33 views
6

Làm cách nào để grep đầu ra của 'hcitool lescan' hoặc cho ống vật chất đó vào bất kỳ thứ gì. Có vẻ như khi tôi ống bất cứ thứ gì từ 'hcitool lescan' tôi không có đầu ra.Đầu ra của Grep hcitool lescan

[email protected]:/mnt/rtd# hcitool lescan |grep B 

^[email protected]:/mnt/rtd# hcitool lescan | tee foo 

^[email protected]:/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 

Trả lời

4

Sự cố là bộ đệm tạm dừng. 'hcitool lescan' không tuôn ra đầu ra của nó sau mỗi thiết bị tìm thấy mới, nó chỉ in chúng với '\ n' (ít nhất là trong các nguồn bluez 5,27 mà tôi đang xem). Theo mặc định, nếu thiết bị đầu cuối là thiết bị đầu cuối thì bộ đệm được tự động đặt thành 'đường đệm', nếu không, bộ đệm được đặt thành bộ đệm (xem here để biết mô tả đầy đủ). Do đó khi bạn chuyển hướng đầu ra của hcitool thành grep chẳng hạn, nó được đệm. Nếu bạn chờ đợi đủ lâu, bạn sẽ thấy kết quả mong đợi từ grep. Để khắc phục điều này, bạn có thể sử dụng stdbuf để chạy hcitool với stdout line-đệm:

$ stdbuf -oL hcitool lescan | grep B

+0

Đáng tiếc là tôi dường như không có stdbuf trên edision intel/coreutilities yocto, và đã không tìm ra nơi để tìm thấy chúng. –

0

đảm bảo để chạy với sudo:

$ sudo stdbuf -oL hcitool lescan | grep <pattern> 
+0

không liên quan đến câu hỏi của OP nhưng tôi thấy hữu ích khi cài đặt gói 'moreutils' và sử dụng lệnh' ts' để đánh dấu thời gian mỗi mục: 'sudo stdbuf -oL hcitool lescan --duplicates | ts | grep ' – kaptan

Các vấn đề liên quan