¿Cómo manejar la línea de subcomando en el script de Shell?

¿Cómo manejar la línea de subcomando en el script de Shell?

Soy nuevo en Linux y estoy haciendo un proyecto de Bluetooth de bajo consumo utilizando Intel Edison. El Edison tiene un Yocto 1.6.1. Utilicé Bluz y gatttool para conectar mi sensor BLE. Pero necesito escribir el mismo comando cada vez que quiero una conexión. Entonces quiero escribir un script de shell y dejar que se ejecute automáticamente cuando inicio la placa.

En la ventana de terminal, ingreso estos comandos:

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

Salta a [D2:AD:9F:B7:BB:60][LE]> y luego escribo "conectar"

[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

Cuando escribo un script de shell, ¿cómo puedo manejar "[D2:AD:9F:B7:BB:60][LE]>" en mi script? No puedo poner "conectar" directamente. No 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

Respuesta1

La expectherramienta debe hacer lo que quieras.

Viene con autoexpectel cual producirá un guión esperado "viendo" una sesión interactiva suya. Ejecute autoexpect, luego haga todo lo que haría en su shell normal y, al salir del shell, obtendrá un archivo script.expque luego podrá usar como base.

información relacionada