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?
bash
sender argumenterne videre til det script, du ' kører igen (at ' er, hvad minsh
er 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 start
fra kommandolinjen, og det fungerer perfekt. Nu ændrer jeg shell-scriptet udensh
men jeg fikstartup.sh: line 2: subaap1/bin/app.sh: Permission denied
. Ethvert forslag sir? - Ja, jeg prøvede
sh /path/to/shell/script arg
og argumenterede det igennem. Det afhænger muligvis af, hvilken shellsh
der faktisk er knyttet til - @Michael – godt punkt! sh kunne gå et andet sted end bash.