捕获期望脚本中挂起的服务的输出

捕获期望脚本中挂起的服务的输出

我正在编写 expect 脚本来运行 bluetoothctl 命令。当 bluetoothctl 运行良好时,命令运行成功。但如果蓝牙服务出现问题,它会显示“正在等待连接到 bluetoothd...”,此时 expect 脚本已存在。我想捕获该异常,重新启动蓝牙服务,然后再次运行 expect 脚本。以下是脚本:

#!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
    }
}

我尝试使用超时但是提示出现后整个脚本就停止工作。

相关内容