Hoe sh uit sh-bestand te draaien

Ik heb een Java-applicatie ontwikkeld. Ik heb de applicatie opgedeeld in 5 subapplicaties en een servicewrapper voor elke subapplicatie gemaakt met shell-scripts:

subaap1/bin/app.sh subaap2/bin/app.sh ... 

Nu wil ik een opstartscript maken startup.sh om alle wrapper-scripts uit te voeren:

#!/bin/bash sh subaap1/bin/app.sh start sh subaap2/bin/app.sh start ... 

Maar als ik het uitvoer, krijg ik:

Onverwachte opdracht: start

Hoe kan ik dit oplossen?

Opmerkingen

  • Voor zover ik kan nagaan, wordt die fout veroorzaakt door uw applicatie. Welk commando typ je om alleen subaap1 uit te voeren?

Answer

Je zou sh niet moeten gebruiken in uw script om uw subapplicaties uit te voeren.

Gebruik gewoon:

#!/bin/bash subaap1/bin/app.sh start subaap2/bin/app.sh start ... 

Bijgewerkt volgens onderstaande opmerkingen:

je versie zou moeten werken, maar je moet weten welke shell sh aanroept. Het kan zijn dat je de verkeerde shell hebt, of dat de machtigingen voor je apps onjuist zijn voor de shell die je probeert te gebruiken.

Opmerkingen

  • Weet u het zeker? bash zal de argumenten doorgeven aan het script dat u ' loopt (dat ' is waar mijn sh een symbolische link naar heeft); ik don ' weet niet van andere shells
  • @Michael – zal het ze doorgeven als je sh gebruikt? Je zou gelijk kunnen hebben – ik ' niet doen Als ik dat wil, zet ik de mijne altijd tussen aanhalingstekens. Of zoals hier, jus t verwijderen sh en bash gaat er graag van uit dat de regel een applicatie is.
  • Ik heb geprobeerd subaap1/bin/app.sh start uit te voeren vanaf de commandoregel, en het werkt perfect. Nu verander ik het shellscript zonder sh maar ik heb startup.sh: line 2: subaap1/bin/app.sh: Permission denied. Enige suggestie meneer?
  • Ja, ik heb sh /path/to/shell/script arg geprobeerd en de arg heeft het gehaald. Het kan echter afhangen van welke shell sh daadwerkelijk is gelinkt
  • @Michael – goed punt! sh zou ergens anders heen kunnen gaan dan bash.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *