サーバーの再起動時に複数のサービスを起動するスクリプトを作成しています。これを行うには、ディレクトリを繰り返しながら各ディレクトリにstart.shスクリプトがあることを確認している場合は、そのスクリプトを呼び出します。ただし、このタスクの一部として選択した名前のサービスを無視するようにスクリプトを設定したいと思います。この場合、mongoは次のようになります。
for service in $HOME/start/* ; do
if [ -e $HOME/start/$service/start.sh ] && [ $service != mongo ]
then
cd $HOME/start/$service
./start.sh
else
pwd
echo "No start script found for $service"
fi
done
これは、サービスの前提条件として、このループが呼び出される前にmongoが起動され、一度に複数のインスタンスを持つことができないためです。しかし、ループを続けてmongoを呼び出します。これを無視するにはどうすればよいですか?
編集:appNameをサービスに変更
ベストアンサー1
glob を使用してファイルを繰り返すと、パスがファイルに追加されます。したがって、ファイルが単にmongo
(コードに基づいている必要があり、そうでない場合でも問題になります)、ループはに設定され、等しくないことを確認しよservice
う/home/<YOUR USER>/start/mongo
とします。mongo
次の方法を使用してbasename
問題を解決できます。
for s in "$HOME/start/"*
do
service=$(basename "$s")
if [ -f "$HOME/test/$service/start.sh" ] && [ "$service" != mongo ]
then
cd "$HOME/start/$service"
./start.sh
else
pwd
echo "No start script found for $service"
fi
done