
我是 Linux 新手,正在使用 Intel Edison 做一個低功耗藍牙專案。 Edison 上有 Yocto 1.6.1。我使用 Bluz 和 gatttool 連接我的 BLE 感測器。但每次需要連線時,我都需要輸入相同的命令。所以我想寫一個shell腳本,讓它在我啟動板子時自動運行。
在終端機視窗中,我輸入以下命令:
rfkill unblock bluetooth
hciconfig hci0
export PATH=$PATH:~/bluez-5.24/attrib/
gatttool -b D2:AD:9F:B7:BB:60 -I -t random
它跳到 [D2:AD:9F:B7:BB:60][LE]> 然後我輸入“connect”
[D2:AD:9F:B7:BB:60][LE]> connect
Attempting to connect to D2:AD:9F:B7:BB:60
Connection successful
[D2:AD:9F:B7:BB:60][LE]> char-write-req 0x000e 0100
當我編寫shell腳本時,如何在腳本中處理“[D2:AD:9F:B7:BB:60][LE]>”?我不能直接輸入“連接”。這是行不通的。
#!/bin/sh
rfkill unblock bluetooth
hciconfig hci0
export PATH=$PATH:~/bluez-5.24/attrib/
gatttool -b D2:AD:9F:B7:BB:60 -I -t random
conncet
char-write-req 0x000e 0100
答案1
該expect
工具應該做你想做的事。
它附帶了autoexpect
透過「觀看」您的互動式會話來產生預期腳本的功能。運行autoexpect
,然後執行您在常規 shell 中執行的所有操作,退出 shell 後您將獲得文件script.exp
,您可以將其用作基礎。