쉘 스크립트에서 하위 명령줄을 처리하는 방법은 무엇입니까?

쉘 스크립트에서 하위 명령줄을 처리하는 방법은 무엇입니까?

저는 Linux를 처음 접하고 Intel Edison을 사용하여 Bluetooth 저에너지 프로젝트를 진행하고 있습니다. Yocto 1.6.1은 Edison에서 사용할 수 있습니다. Bluz와 gatttool을 사용하여 BLE 센서를 연결합니다. 하지만 연결해야 할 때마다 동일한 명령을 입력해야 합니다. 그래서 쉘 스크립트를 작성하고 보드를 시작할 때 자동으로 실행되도록 하고 싶습니다.

터미널 창에 다음 명령을 입력합니다.

rfkill unblock bluetooth
hciconfig hci0
export PATH=$PATH:~/bluez-5.24/attrib/
gatttool -b D2:AD:9F:B7:BB:60 -I -t random

[D2:AD:9F:B7:BB:60][LE]>로 점프한 다음 "connect"를 입력합니다.

[D2:AD:9F:B7:BB:60][LE]> connect
Attempting to connect to D2:AD:9F:B7:BB:60
Connection successful
[D2:AD:9F:B7:BB:60][LE]> char-write-req 0x000e 0100

쉘 스크립트를 작성할 때 스크립트에서 "[D2:AD:9F:B7:BB:60][LE]>"를 어떻게 처리합니까? "connect"를 직접 입력할 수 없습니다. 이것은 작동하지 않습니다.

#!/bin/sh
rfkill unblock bluetooth
hciconfig hci0
export PATH=$PATH:~/bluez-5.24/attrib/
gatttool -b D2:AD:9F:B7:BB:60 -I -t random
conncet
char-write-req 0x000e 0100

답변1

도구 expect는 원하는 작업을 수행해야 합니다.

autoexpect대화형 세션을 "감시"하여 의도한 스크립트를 생성하는 기능이 함께 제공됩니다 . 를 실행 한 다음 일반 셸에서 수행하는 모든 작업을 수행하고 셸을 종료하면 기본으로 사용할 수 있는 autoexpect파일을 갖게 됩니다 .script.exp

관련 정보