Como lidar com a linha de subcomando no shell script?

Como lidar com a linha de subcomando no shell script?

Sou novo no Linux e estou fazendo um projeto de Bluetooth de baixa energia usando o Intel Edison. O Edison tem um Yocto 1.6.1. Usei Bluz e gatttool para conectar meu sensor BLE. Mas preciso digitar o mesmo comando sempre que quiser uma conexão. Então, quero escrever um script de shell e deixá-lo rodar automaticamente quando eu inicializar a placa.

Na janela do terminal, eu insiro este comando:

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

Ele pula para [D2:AD:9F:B7:BB:60][LE]> e digito "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

Quando escrevo shell script, como posso lidar com "[D2:AD:9F:B7:BB:60][LE]>" no meu script? Não consigo colocar "conectar" diretamente. Não vai funcionar.

#!/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

Responder1

A expectferramenta deve fazer o que você deseja.

Ele vem com autoexpecto qual produzirá um script esperado "assistindo" a uma sessão interativa sua. Execute autoexpecte faça tudo o que faria em seu shell normal e, ao sair do shell, você obterá um arquivo script.expque poderá usar como base.

informação relacionada