Jag utvecklade ett Java-program. Jag delade in applikationen i 5 underapplikationer och skapade en serviceomslag till varje underapplikation med hjälp av skalskript:
subaap1/bin/app.sh subaap2/bin/app.sh ...
Nu vill jag skapa ett startskript startup.sh
för att köra alla omslagsskript:
#!/bin/bash sh subaap1/bin/app.sh start sh subaap2/bin/app.sh start ...
Men när jag kör det får jag:
Oväntat kommando: start
Hur kan jag åtgärda detta?
Kommentarer
- Såvitt jag kan säga kommer det felet från din applikation. Vilket kommando skriver du för att bara köra subaap1?
Svar
Du behöver inte använda sh i ditt skript för att köra dina underapplikationer.
Använd bara:
#!/bin/bash subaap1/bin/app.sh start subaap2/bin/app.sh start ...
Uppdateras enligt kommentarerna nedan:
din version ska fungera, men du måste veta vad shell sh ringer. Det kan vara att du har fel skal eller att behörigheterna i dina appar är felaktiga för det skal du försöker använda.
Kommentarer
- Är du säker?
bash
skickar argumenten till skriptet du ' körs igen (att ' är vad minsh
är länkad till); jag don ' vet inte om andra skal - @Michael – kommer det att passera dem om du använder sh? Du kan ha rätt – jag gör bara ' Jag omger mig alltid i citat om jag vill göra det. Eller som här, ju t ta bort sh och bash antar gärna att raden är en applikation.
- Jag har försökt att köra
subaap1/bin/app.sh start
från kommandoraden och det fungerar perfekt. Nu ändrar jag skalskriptet utansh
men jag fickstartup.sh: line 2: subaap1/bin/app.sh: Permission denied
. Något förslag sir? - Ja, jag försökte
sh /path/to/shell/script arg
och arg klarade det. Det kan bero på vilket skalsh
som faktiskt är länkat till dock - @Michael – bra poäng! sh kunde gå någon annanstans än bash.