Jeg utviklet et Java-program. Jeg delte applikasjonen i 5 underprogrammer, og opprettet en serviceomslag til hver underapplikasjon ved hjelp av skallskript:
subaap1/bin/app.sh subaap2/bin/app.sh ...
Nå vil jeg lage et oppstartsskript startup.sh
for å utføre alle innpakningsskriptene:
#!/bin/bash sh subaap1/bin/app.sh start sh subaap2/bin/app.sh start ...
Men når jeg kjører den får jeg:
Uventet kommando: start
Hvordan kan jeg fikse dette?
Kommentarer
- Så vidt jeg kan se, kommer den feilen fra applikasjonen din. Hvilken kommando skriver du for å bare kjøre subaap1?
Svar
Du trenger ikke å bruke sh i skriptet ditt for å kjøre underapplikasjonene dine.
Bare bruk:
#!/bin/bash subaap1/bin/app.sh start subaap2/bin/app.sh start ...
Oppdatert i henhold til kommentarene nedenfor:
versjonen din skal fungere, men du trenger å vite hva shell sh ringer. Det kan være at du har feil skall, eller tillatelsene på appene dine er feil for skallet du prøver å bruke.
Kommentarer
- Er du sikker?
bash
vil føre argumentene videre til skriptet du ' kjører igjen (at ' er det som minsh
er koblet til); Jeg har ikke ' vet ikke om andre skjell - @Michael – vil det passere dem hvis du bruker sh? Du kan ha rett – jeg gjør bare ikke ' det på den måten. Jeg omgir alltid mine i sitater hvis jeg vil gjøre det. Eller som her, jus t fjerne sh og bash antar gjerne at linjen er et program.
- Jeg har prøvd å utføre
subaap1/bin/app.sh start
fra kommandolinjen, og det fungerer perfekt. Nå endrer jeg skallskriptet utensh
men jeg fikkstartup.sh: line 2: subaap1/bin/app.sh: Permission denied
. Noe forslag sir? - Ja, jeg prøvde
sh /path/to/shell/script arg
og argumenterte det. Det kan avhenge av hvilket skallsh
som faktisk er koblet til skjønt - @Michael – godt poeng! sh kunne gå et annet sted enn bash.