Hvordan kjøre sh fra sh-fil

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 min sh 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 uten sh men jeg fikk startup.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 skall sh som faktisk er koblet til skjønt
  • @Michael – godt poeng! sh kunne gå et annet sted enn bash.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *