我是 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
,您可以将其用作基础。