2013-05-21 25 views
1

我有一個非常高的水平和複雜的腳本,我基本上需要使用set -e進行調試(因爲我想在運行邏輯時不要在循環中運行昂貴的操作),但是它變得越來越困難(即使設置了-x)也可以準確找出由於意外結果腳本正在退出的位置。bash set -e:如何找出腳本在哪一行上退出?

我有大約3種腳本以各種方式相互調用(與inotifywatch結合),所以你可以看到這有點毛茸茸的。

我正在尋找類似的「腳本x.sh退出第4行」,而不是無信息[exited]

回答

1

閱讀man bashtrapBASH_LINENOFUNCNAME

如果發生錯誤,您應該可以使用陷阱調用自己的函數。在這個函數中,你可以使用給定的數組來得到一個想法出了什麼問題。

+1

哦!真棒!哇,我**已經**在這些腳本之一中使用退出陷阱。從來沒有想過要進一步利用它。 –