シェルスクリプトでサブコマンドラインを処理する方法は?

シェルスクリプトでサブコマンドラインを処理する方法は?

私はLinuxに初めてアクセスし、Intel Edisonを使用してBluetooth Low Energyプロジェクトを進めています。 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

おすすめ記事