2016-10-24 21 views
0

毎時 'ワーカー'スクリプトを実行するcrontabエントリがあります。 'worker'スクリプトの中には、他のスクリプトへの複数のパスがあります。bash - スクリプトから複数のスクリプトを実行する

#!/bin/bash 
clear 
echo "project-worker" 
echo "Script to run checks on all jobs!" 
source /home/user/project/project-jobs/cleanuptest1/project-mon-cleanuptest1.sh 
source /home/user/project/project-jobs/sedtest1/project-mon-sedtest1.sh 
jobslot=empty 
exit 

私の問題は、最初のスクリプト(cleanuptest1.sh)を実行して残りの部分を無視しているようです。私はどこに間違っているのか誰にでも見える?私はsourceを使用すべきであるスクリプト内から他のスクリプトを呼び出すのを読むが、どこが間違っているのだろうか、それは複数のインスタンスに使用できないのだろうか?

多くのありがとうございました!

+1

なぜ 'source'を使用してスクリプトを実行していますか?メインのスクリプトの環境変数が必要な場合を除き、ベストプラクティスでは代わりに '.'を使用するよう指示されます。 –

+2

'source' /' .'を使用する必要がある場合は、スクリプトが 'exit'を呼び出さないようにする必要があります。 – chepner

+0

お返事ありがとうございます - @chepner - スクリプトから 'exit'を削除する必要がありますか?スクリプトが終了する前にシェルが終了すると思いますか?なぜ私はそれを削除する必要があるだけ好奇心? – keefer

答えて

3

ソースは、呼び出し先のスクリプト環境を呼び出し先に保存する必要がある場合にのみ使用してください。

そうでない場合は、サブシェルでサブスクリプトを実行できます。

#!/bin/bash 
clear 
echo "project-worker" 
echo "Script to run checks on all jobs!" 
bash /home/user/project/project-jobs/cleanuptest1/project-mon-cleanuptest1.sh 
bash /home/user/project/project-jobs/sedtest1/project-mon-sedtest1.sh 
jobslot=empty 
exit 
+0

優秀 - ありがとうございます。 – keefer

関連する問題