2013-07-03 7 views
0

Je suis sûr qu'il existe un moyen plus simple de le faire, mais je n'ai pas encore trouvé ce qu'il faut essayer ensuite. Nous exécutons des applications jboss et je souhaite pouvoir les redémarrer avec un paramètre d'entrée. Comme je souhaite redémarrer plus d'une application à la fois, j'ai pensé qu'une liste serait bonne. Ceci est une virgule séparée. C'est jusqu'où je suis allé jusqu'ici.Exécution d'un script variable avec des paramètres via un script

IFS=','; 
while read mLine 
do 
for i in $mLine 
do 
sh jboss-{$mLine} restart 
done; 
done < /tmp/apps 

En général, il fonctionne si je viens d'écrire "sh restart jboss-abcdef", mais pas aussi longtemps que j'écris "jboss - restart $ {} mLine". Ce dernier retournera une réponse du script (qui est le bon script selon les valeurs d'entrée) demandant le paramètre qui, comme vous pouvez le voir, est dans la commande sh de ce script. Le premier démarre le script correct tout comme le dernier, mais contrairement à ce dernier, le premier redémarre réellement le serveur en question.

On pourrait argumenter que je mets aussi un pour chaque applcation, mais puisque toutes les applications ne doivent pas être redémarrées chaque fois que cela me ferait beaucoup de si c'est ça et si c'est pour savoir quelles lignes devraient être exécutées , et donc vaincre le but de propre et simple ...

Toutes les idées seraient appréciées que je suis prêt à essayer le plus pour trouver une solution.

Répondre

0

Si vous faites ceci:

#!/bin/sh 
for app in "[email protected]"; do 
    sh "jboss-$app" restart 
done 

Ensuite, vous pouvez passer une liste séparée par des espaces de noms d'applications au script

./restart-apps app1 app2 app3 ... 
+0

Merci, a très bien fonctionné :) Vous avez de nouveaux problèmes mais au moins il est un peu plus près. – SkyRaider

Questions connexes