2016-05-25 5 views
1

bashで起動したばかりのプロセスにコマンドを発行するにはどうすればよいですか?シェルコマンドでプロセスを開くコマンドを送信する

たとえば、

# Start Bluez gatttool then Connect to bluetooth device 
gatttool -b $MAC -I 
connect # send 'connect' to the gatttool process? 

gatttoolプロセスが実行されているため、現在、私のシェルスクリプトがconnectラインに取得していません。

+0

おそらく、プロセスの標準入力に – tofutim

+0

を送信するように探している可能性があります。http://serverfault.com/questions/188936/writing-to-stdin-of-background-process – tofutim

答えて

0

あなたは、単にプロセスに「\ nを接続する」という文字列を送信する場合は、標準のパイプを使用することができます:あなたはgatttoolと、より複雑な「会話」に従事したい場合は

echo "connect" | gatttool -b $MAC -I 

をプロセスでは、expect (1)chat (8)ツールを使用して、一連の文字列を送信し、特定の応答を待つことができます。

0

あなたは、このようなのようなヒアドキュメントを使用することができ、配管の少し「軽い」方法を好む場合:2つのEOFタグの間に含まれる

gatttool -b $MAC -I <<EOF 
connect 
(...) 
EOF 

すべては、コマンドの入力にパイプされます。私はこれでEOFタグの間にコマンドとやりとりすることはできないと考えています。前の答えで述べたように、何かを返す前にコマンドの出力に対処する必要がある場合は、expectを使うことを検討してください。

関連する問題