Raspberry Pi의 Bluetooth를 검색 가능하게 만들기 위해 간단한 셸 스크립트를 작성하려고 하는데 몇 가지 문제가 발생했습니다. 내 Raspberry Pi는 Raspbian을 실행합니다.
명령줄을 통해 실행하면 정상적으로 작동합니다.
coproc bluetoothctl
echo -e 'discoverable on' >&${COPROC[1]}
그러나 다음을 수행하는 쉘 스크립트를 만들 때:
#! /bin/bash
coproc bluetoothctl
echo -e 'discoverable on' >&${COPROC[1]}
"bash test_script.sh" 명령줄을 사용하면 스크립트가 올바르게 실행되지만 블루투스 상태는 변경되지 않습니다.
누구든지 나를 도와줄 수 있나요? 감사해요!
답변1
bluetoothctl
일단 완료되면 스크립트가 종료되고 종료됩니다 . 이는 작업을 완료할 시간이 충분하지 않을 수 있음을 echo
의미합니다 . 표준 출력에 무언가를 쓰려고 시도하는 동안 신호 수신으로 인해 bluetoothctl
보조 프로세스가 종료되었을 가능성이 높습니다 (스크립트 종료로 인해 종료됨).PIPE
여기에는 두 가지 옵션이 있습니다(아마도 그 이상).
스크립트를 종료하기 전에 코루틴이 완료될 때까지 기다리십시오.
wait "$COPROC_PID"
스크립트가 끝나기 전에 이 작업을 수행 할 수 있습니다 . 이렇게 하면 다른 방법으로 종료될 때까지 스크립트가 실행됩니다 (예: 두 번째 방법을 사용하여 명령을 보낼bluetoothctl
수 있음 ).quit
echo
bluetoothctl
문자열을 다음으로 직접 파이프 하면 됩니다 .echo discoverable on | bluetoothctl
또는 이 문자열을 사용하세요.
bluetoothctl <<<'discoverable on'
이로 인해
bluetoothctl
명령을 실행한 후 종료됩니다.bluetoothctl
완료되면 스크립트가 종료됩니다.