我正在尝试做一个简单的shell脚本,这将使我的覆盆子的蓝牙被发现,但我面临一些问题。我的覆盆子在运行Raspbian。
通过命令行运行这个命令行可以很好地工作:
coproc bluetoothctl
echo -e 'discoverable on' >&${COPROC[1]}但是,当我创建一个shell脚本时,执行以下操作:
#! /bin/bash
coproc bluetoothctl
echo -e 'discoverable on' >&${COPROC[1]}使用命令行"bash test_script.sh",脚本被正确地执行,但是蓝牙的状态保持不变。
有人能帮我一把吗?谢谢!
发布于 2019-08-22 15:39:52
脚本退出,bluetoothctl在echo完成后立即终止,这意味着bluetoothctl可能没有足够的时间来完成它的任务。当试图向标准输出(脚本退出时关闭)写入某些内容时,协进程很可能由于接收到PIPE信号而退出。
这里有两个选项(很可能更多):
wait "$COPROC_PID"执行此操作。这将导致脚本运行,直到bluetoothctl以其他方式终止为止(例如,您可以使用第二个echo向它发送quit命令)。bluetoothctl:echo可在_~_当bluetoothctl完成时,脚本将终止。https://unix.stackexchange.com/questions/536841
复制相似问题