2010-10-08 94 views
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 

在测试网络的任务和测试单元的任务,我不得不Grails的一些调用运行一些测试,然后做一些包装的东西。 事情是这样的:

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

在文件中的脚本/ SH /测试单位表和脚本/ SH /测试名单上有测试运行列表。 事情是这样的:

Person 
Book 

第一循环不中断运行文件脚本/ SH /测试列表的所有行,然后它开始运行第二个循环。

正如你所看到的,我已经添加了-vx来查看可能存在的问题。但我找不到我做错了什么。

我想可能是脚本/ sh/test-list中的东西崩溃了,打破了循环。如果是这种情况,我想知道什么是崩溃,并且我希望循环能够不间断地继续下去。

你可以给我任何指针吗?

+0

您是否检查过sort -r scripts/sh/test-list的输出是?也许你可以将sh -vx scripts/sh/test-web-task.sh替换为echo,并查看你输出的内容是否与sort -r scripts/sh/test-list相同。 – 2010-10-08 13:54:02

+0

对不起,我已经做了那个测试。与回声工作正常。 – user2427 2010-10-08 14:08:01

回答

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

第二个脚本可能是窃取原始脚本的stdout和stdin。让我知道这是否修复它

+0

对不起,我不明白。你建议用sh -vx scripts/sh/test-web-task.sh“$ fn”替换sh -vx scripts/sh/test-web-task.sh“$ fn” user2427 2010-10-08 14:18:00

+0

您从主脚本运行的第二个脚本是窃取stdin和stdout。由于第二个脚本在第一次运行后完成,它将退出主脚本,因此不会显示任何错误。我会尽力找到我阅读过的网站并添加其他评论。 – mezzie 2010-10-09 00:03:20

+0

它完美的作品。当我在其他评论和作品中提到时,我已经取代了它。谢谢 – user2427 2010-10-18 18:19:43