首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bash脚本中的Coproc

bash脚本中的Coproc
EN

Unix & Linux用户
提问于 2019-08-22 12:14:51
回答 1查看 902关注 0票数 0

我正在尝试做一个简单的shell脚本,这将使我的覆盆子的蓝牙被发现,但我面临一些问题。我的覆盆子在运行Raspbian。

通过命令行运行这个命令行可以很好地工作:

代码语言:javascript
复制
coproc bluetoothctl
echo -e 'discoverable on' >&${COPROC[1]}

但是,当我创建一个shell脚本时,执行以下操作:

代码语言:javascript
复制
#! /bin/bash
coproc bluetoothctl
echo -e 'discoverable on' >&${COPROC[1]}

使用命令行"bash test_script.sh",脚本被正确地执行,但是蓝牙的状态保持不变。

有人能帮我一把吗?谢谢!

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2019-08-22 15:39:52

脚本退出,bluetoothctlecho完成后立即终止,这意味着bluetoothctl可能没有足够的时间来完成它的任务。当试图向标准输出(脚本退出时关闭)写入某些内容时,协进程很可能由于接收到PIPE信号而退出。

这里有两个选项(很可能更多):

  1. 在终止脚本之前等待协同进程完成。您可以在脚本结束前由wait "$COPROC_PID"执行此操作。这将导致脚本运行,直到bluetoothctl以其他方式终止为止(例如,您可以使用第二个echo向它发送quit命令)。
  2. 只需将字符串直接输送到bluetoothctl:echo可在_~_当bluetoothctl完成时,脚本将终止。
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/536841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档