2010-10-08 92 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