Jeg udviklede en Java-applikation. Jeg delte applikationen i 5 underapplikationer og oprettede en serviceindpakning til hver underapplikation ved hjælp af shell-scripts:
subaap1/bin/app.sh subaap2/bin/app.sh ...
Nu vil jeg oprette et opstarts script startup.sh for at udføre alle wrapper-scripts:
#!/bin/bash sh subaap1/bin/app.sh start sh subaap2/bin/app.sh start ...
Men når jeg kører det, får jeg:
Uventet kommando: start
Hvordan kan jeg rette dette?
Kommentarer
- Så vidt jeg kan se, kommer denne fejl fra din applikation. Hvilken kommando skriver du for bare at køre subaap1?
Svar
Du behøver ikke bruge sh i dit script til at køre dine underapplikationer.
Brug bare:
#!/bin/bash subaap1/bin/app.sh start subaap2/bin/app.sh start ...
Opdateret efter kommentarerne nedenfor:
din version skal fungere, men du skal vide, hvad shell sh kalder. Det kan være, at du har den forkerte shell, eller tilladelserne til dine apps er forkerte for den shell, du prøver at bruge.
Kommentarer
- Er du sikker?
bashsender argumenterne videre til det script, du ' kører igen (at ' er, hvad minsher linket til); jeg har ikke ' kender ikke andre skaller - @Michael – vil det passere dem, hvis du bruger sh? Du kunne have ret – jeg gør det bare ikke ' det på den måde. Jeg omgiver altid mine i citater, hvis jeg vil gøre det. Eller som her, jus t fjern sh og bash antager med glæde, at linjen er en applikation.
- Jeg har forsøgt at udføre
subaap1/bin/app.sh startfra kommandolinjen, og det fungerer perfekt. Nu ændrer jeg shell-scriptet udenshmen jeg fikstartup.sh: line 2: subaap1/bin/app.sh: Permission denied. Ethvert forslag sir? - Ja, jeg prøvede
sh /path/to/shell/script argog argumenterede det igennem. Det afhænger muligvis af, hvilken shellshder faktisk er knyttet til - @Michael – godt punkt! sh kunne gå et andet sted end bash.