2017-04-06 9 views
1

コマンドを手動で入力しなくても実行したいCプログラムがあります。私はプログラムに与えたい4つのコマンド(あなたがプログラムを終了するために5を数えるならば5)を持っていて、どこから始めたらいいのかわかりません。実行されたプログラムに自動的に入力を与える

./a.out <<<'name' 

のようなものは1つの文字列で渡すことができますが、それは私にとってはうまくいきません。 これをより困難にするその他の問題は、コマンドの1つが出力を与え、その出力を後のコマンドの一部にする必要があることです。私がソースコードにアクセスできれば、いくつかのループやカウンターで無理矢理力を与えることができますので、私はそれを保持しようとしていますが、今のところ私はそれなしで働いています。私はbashスクリプトでこれを行う方法があると思っていたが、それが何であるかわからない。

答えて

0

簡単な例では、実行可能ファイルをcoproc(バージョン4が必要)で実行します。短い例:

#!/bin/bash 

coproc ./parrot 

echo aaa >&${COPROC[1]} 
read result <&${COPROC[0]} 
echo $result 
echo exit >&${COPROC[1]} 
parrot(テスト実行)と

:より深刻なシナリオ、使用expectについて

#!/bin/bash 

while [ true ]; do 
    read var 
    if [ "$var" = "exit" ]; then exit 0; fi 
    echo $var 
done 

+0

これは私が作った簡単なテストプログラムのために働いたが、もう少し複雑なことが必要になると思う。あなたは私に例外の使用例を教えてもらえますか? –

関連する問題