2013-09-25 26 views
0

我有一個要求,以創建一個shell運行其他炮彈象下面這樣:運行shell

#!/bin/ksh 
. ${SCRIPT}/DataLoad.sh File1 
. ${SCRIPT}/DataLoad.sh File2 
. ${SCRIPT}/DataLoad.sh File3 
. ${SCRIPT}/DataLoad.sh File4 

而在這將在錯誤處理一些「退出NUM」命令DataLoad.sh。 但是我希望所有這4個命令都會被執行,不管哪一個遇到「退出」。 我該怎麼做?

回答

0

. scriptname ... 

會導致腳本在當前shell上下文中執行。當任何腳本執行此操作時,這會導致主腳本爲exit

你可以這樣說:

#!/bin/ksh 
ksh ${SCRIPT}/DataLoad.sh File1 
ksh ${SCRIPT}/DataLoad.sh File2 
ksh ${SCRIPT}/DataLoad.sh File3 
ksh ${SCRIPT}/DataLoad.sh File4 
+0

非常感謝。有用。 – Janus

0

也許我完全不明白你的問題,但我建議你用find來替換這個腳本;

find -iname "file*" -exec DataLoad.sh {} ';' 
+0

如果第一DataLoad.sh運行到一個 「退出」,將在未來DataLoad.sh運行?現在,一旦我的DataLoad.sh運行到「退出」,它將退出整個shell並且不會運行下一個... – Janus

+0

@Janus只有當Dataload.sh以非零退出狀態返回時纔會如此。這裏首選@devnull的答案。 –

+0

第一個退出並不重要,找到運行的全部 – Armin