我有一个我一直在努力的bash脚本文件,我正试图能够列出当前可用的蓝牙设备,然后允许用户选择一个并连接到它。我已经完成了所有代码,但是蓝牙设备的列表将不会保留您直接从CLI运行命令时通常会获得的空白。
在一个理想的世界中,我希望能够实际列出蓝牙设备并让用户选择一个,但我遇到了太多麻烦,所以我选择了一个更简单的解决方案它们全部并要求用户键入他们想要连接的设备的mac地址。
我遇到问题的代码是:
echo "Scanning..."
bluetoothDeviceList=$(hcitool scan | sed -e 1d)
if [ "$bluetoothDeviceList" == "" ] ; then
result="No devices were found. Ensure device is on and try again."
display_result "Connect Bluetooth Device"
else
bluetoothMacAddress=$(dialog --title "Connect Bluetooth Device" --backtitle "Pi Assist" --inputbox "$bluetoothDeviceList \n\nEnter the mac address of the device you would like to conect to:" 0 0 2>&1 1>&3);
if [ $bluetoothMacAddress != "" ] ; then
bluez-simple-agent hci0 $bluetoothMacAddress
bluez-test-device trusted $bluetoothMacAddress yes
bluez-test-input connect $bluetoothMacAddress
fi
fi
在代码中我有一个display_result函数,我在下面展示过,只是为了确保你能够更全面地了解我正在做的事情。
display_result()
{
dialog --title "$1" \
--no-collapse \
--msgbox "$result" 0 0
}
答案 0 :(得分:1)
你可能会发现这样的事情是一个有用的起点。您需要添加错误处理等
# Need a file to capture output of dialog command
result_file=$(mktemp)
trap "rm $result_file" EXIT
readarray devs < <(hcitool scan | tail -n +2 | awk '{print NR; print $0}')
dialog --menu "Select device" 20 80 15 "${devs[@]}" 2> $result_file
result=$(<$result_file)
answer={devs[$((result+1))]}
答案 1 :(得分:1)