Ваши сценарии закрываются, и bluetoothctl
завершается, как только echo
выполняется, что означает, что bluetoothctl
может не хватить времени для выполнения своей задачи. Вполне вероятно, что процесс co-завершает работу из-за получения сигнала PIPE
при попытке записать что-либо в стандартный вывод (, который закрывается выходом скрипта ).
Здесь у вас два варианта (вполне возможно, больше):
Дождитесь завершения процесса co -перед завершением сценария. Вы делаете это с помощью wait "$COPROC_PID"
перед окончанием скрипта. Это приведет к тому, что сценарий будет работать до тех пор, пока bluetoothctl
не будет завершен каким-либо другим способом (, вы можете, например, отправить ему команду quit
со вторымecho
).
Просто передайте строку в bluetoothctl
напрямую:
echo discoverable on | bluetoothctl
или, используя здесь строку -
bluetoothctl <<<'discoverable on'
Это приведет к завершению bluetoothctl
после выполнения команды. Сценарий завершается, когда выполняется bluetoothctl
.