2010-12-03 3 views
2

私は以下のような動作をするC言語で書かれたプログラムを持っています。私は必要なものコマンドラインプログラムをテストするためのシェルスクリプト

WELCOME TO PROGRAM. 

Hit 1 to do task 1. 

Hit 2 to do task 2. 

Hit q to quit. 

は、1、2を入力し、プログラムへのqはので、私は1つのコマンドですべての機能をテストすることができ、プログラムを起動するbashシェルスクリプトです。

私はそれはあなたが「ここにドキュメント」を使用することができ、次の

#!/bin/bash 

./start kernel 
1 
2 
q 

答えて

2

通常はあなたがこれらのタイプのアプリケーションをテストするためexpectを使用しています。

+0

前述の解決策が動作するように見える場合もありますが、あなたのソリューションが最適です。ヘルプバイロンに感謝:) –

4

に似て見えるように仮定します。構文は次のようになります。

./start kernel <<EOF 
1 
2 
q 
EOF 

「EOF」あなたはそれはあなたが実際に入力して必要がありますものではありません限り、欲しいものは何でもユニーク単語ことができます。

+0

これは巧妙なソリューションのおかげローレンスです:) –

1

あなたはテキストファイルで、あなたの入力を保存することができます - この方法をINPUT.TXTし、プログラムを実行します。./program < input.txt

+0

をIこのメソッドを「Poor Man's automation」と呼んでください。私はそれを私が認めたいよりも頻繁に使用します。エラー処理はゼロになりますが、通常はジョブが完了します。 – bta

0

シェルスクリプトは、シェルスクリプトを(たとえ新しいものでも)シェル内で実行されているものと考えることができます。入力のこの種を行うには

簡単な方法は、[your program]は、標準入力を受け入れると仮定すると、ある、次のとおりです。

#!/bin/bash 
echo "1" | [your program] > [logfile1] 
echo "2" | [your program] > [logfile2] 
echo "q" | [your program] > [logfileq] 
+0

私が誤解した場合は私を許してください。私のオリジナルの読書時に、あなたはこれらの機能を一度に1つずつテストしたいと思っていましたが(このコードが何をしているのか)、他の回答を読んだことは不明です。 – William

+0

@whoever_voted_down ...私はここから新しいので、なぜあなたはそれをしたのかに関するいくつかのヒントをくれますか? – William

1

私はこれを実行します。

 
#! /bin/bash 

printf "1\n2\nq\n" | ./start kernel 
+0

+1これはHEREの文書よりも優れています。 –

関連する問題