2009-06-30 14 views
0

私はbashスクリプトを使って他のコードのテストを自動化しています。 。 - 私のテキストの壁面を示しており、ディレクトリreptest内のファイルに保存しますテスト出力のリダイレクト

for i in $(seq 1 10) 
do 
    cd ~/BuildBot 
    rm -rf program  # Remove the directory each time to test installation 
    git clone /localrepo/ 
    cd ~/into/program 
    python2.6 setup.py build_ext -i 
    cd tests 

    python runtest.py >& ~/into/reptest/runtest-all.out.$i 
    echo $? > ~/into/reptest/runtest-all.exit.$i 

done 

次のように実行すると、スクリプトは私が何をしたいん:スクリプトは次のようになりますインストールをテストしたので、プログラム全体が再インストールされるまで待たなければならなくなりました。しかし、私は

for i in $(seq 1 10) 
do 
    cd ~/into/program/tests 

    python runtest.py >& ~/into/reptest/runtest-all.out.$i 
    echo $? > ~/into/reptest/runtest-all.exit.$i 

done 

にスクリプトを削減する場合、スクリプトは、何も起こらない、ハングIはCtrl-Cそれまでの空白行にシェルを待ちます。出力はどうなりますか?テキストの壁を取り戻すにはどうすればいいですか?

+0

あなたはWindows/Cygwinを使用しているのではなく、誤って\ r \ n行末に切り替えましたか? – Boldewyn

+0

Btw:出力ファイルはすべて作成されていないと思いますか? – Boldewyn

+0

seqを使用する必要はありません:for i in {1..10} "。 "python"を "echo"に変更し、何が起こるかを見てください。それはpythonやruntest.pyを犯人として排除します。 –

答えて

0
python runtest.py >& ~/into/reptest/runtest-all.out.$i 

はファイル〜/に/ reptest/RUNTEST-all.outにruntest.pyからstdoutとstderrの両方をリダイレクトします。$ I。あなたの壁は、あなたが剪定した文から来ます。あなたが興味を持っている何

は、おそらくのようなものです:サブシェルでのpython runtest.pyを実行し、ティー」にそのサブシェルからパイプの出力を、その後、それがstdoutに標準エラー出力ですリダイレクト

(python runtest.py 2>&1) | tee ~/into/reptest/runtest-all.out.$i 

〜//reptest/runtest-all.out。$ i "に入力してください。 teeはstdoutにコピーするだけでなく、引き数として与えられたファイルにstdinを保存します。

SIGINTを送るまであなたのプログラムが待つ理由は分かりませんが、中断するまでスクリプトがハングアップするようなbash関連のものは何も表示されません。

関連する問題