Перехватывает вывод из сервиса, который висит в ожидаемом скрипте
Я пишу ожидаемый скрипт для запуска команд bluetoothctl. Когда команды выполняются успешно, когда bluetoothctl работает хорошо. Но если есть проблема с сервисом bluetooth, он показывает "Ожидание подключения к bluetoothd...", и на этом этапе ожидаемый сценарий существует. Я хочу перехватить это исключение, перезапустить службу bluetooth, а затем снова запустить ожидающий сценарий. Вот сценарий:
#!usr/bin/expect -f
set prompt "#"
set address [lindex $argv 0]
spawn sudo bluetoothctl
expect{
$prompt{
send "scan on\r"
sleep 5
send "scan off\r"
send "connect $address\r"
expect "Connection successful" {send "pair $address\r"}
expect "Pairing successful
}
timeout {
send_user "\n----------\r"
expect eof
}
}
Я попытался с использованием тайм-аута, но тогда весь скрипт перестает работать после появления приглашения.