Jai développé une application Java. Jai divisé lapplication en 5 sous-applications et créé un wrapper de service pour chaque sous-application à laide de scripts shell:
subaap1/bin/app.sh subaap2/bin/app.sh ...
Maintenant, je veux créer un script de démarrage startup.sh
pour exécuter tous les scripts wrapper:
#!/bin/bash sh subaap1/bin/app.sh start sh subaap2/bin/app.sh start ...
Mais quand je lexécute, jobtiens:
Commande inattendue: start
Comment puis-je résoudre ce problème?
Commentaires
- Pour autant que je sache, cette erreur vient de votre application. Quelle commande tapez-vous pour exécuter simplement subaap1?
Réponse
Vous ne devriez pas avoir besoin dutiliser sh dans votre script pour exécuter vos sous-applications.
Utilisez simplement:
#!/bin/bash subaap1/bin/app.sh start subaap2/bin/app.sh start ...
Mis à jour selon les commentaires ci-dessous:
votre version devrait fonctionner, mais vous devez savoir quel shell sh appelle. Il se peut que vous nayez pas le bon shell, ou que les autorisations sur vos applications soient incorrectes pour le shell que vous essayez dutiliser.
Commentaires
- Êtes-vous sûr?
bash
transmettra les arguments au script que vous ' en cours dexécution (que ' est ce à quoi monsh
est lié symboliquement); je ne ' je ne connais pas les autres shells - @Michael – les transmettra-t-il si vous utilisez sh? Vous avez peut-être raison – je ne ' pas comme ça. Jentoure toujours le mien entre guillemets si je veux faire ça. Ou comme ici, jus t remove sh et bash est heureux de supposer que la ligne est une application.
- Jai essayé dexécuter
subaap1/bin/app.sh start
à partir de la ligne de commande, et cela fonctionne parfaitement. Maintenant, je change le script shell sanssh
mais jaistartup.sh: line 2: subaap1/bin/app.sh: Permission denied
. Une suggestion monsieur? - Oui, jai essayé
sh /path/to/shell/script arg
et largument a réussi. Cela peut dépendre du shellsh
auquel est effectivement lié - @Michael – bon point! sh pourrait aller ailleurs que bash.