0

次のようなコードのbashスクリプトがあります。

echo "EXECUTING TASK 1"
sort -r scripts/sh/test-list | while read fn; do    
    sh -vx scripts/sh/test-web-task.sh "$fn"
done

echo "EXECUTING TASK 2"
sort -r scripts/sh/test-unit-list | while read fn; do   
    sh -vx scripts/sh/test-unit-task.sh "$fn"
done

test-web-task と test-unit-task では、grails を呼び出していくつかのテストを実行し、パッケージ化を行います。このようなもの:

grails test-app $1
mv results backup/$1

ファイル scripts/sh/test-unit-list および scripts/sh/test-list には、実行するテストのリストがあります。このようなもの:

Person
Book

最初のループは、ファイル scripts/sh/test-list のすべての行を実行せずに中断し、2 番目のループの実行を開始します。

ご覧のとおり、何が問題なのかを確認するために、sh に -vx を追加しました。しかし、私は間違っていることを見つけることができません。

おそらく、scripts/sh/test-list の何かがクラッシュし、ループが壊れていると思います。この場合、何がクラッシュしているのかを知りたいのですが、ループが途切れることなく続くようにしたいのです。

ポインタを教えてもらえますか?

4

1 に答える 1

0
sh -vx scripts/sh/test-web-task.sh "$fn" < /dev/null

2 番目のスクリプトは、おそらく元のスクリプトの stdout と stdin を盗んでいます。これで直るか教えて

于 2010-10-08T13:50:12.310 に答える