Sådan køres sh fra sh-fil

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 min sh 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 uden sh men jeg fik startup.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 shell sh der faktisk er knyttet til
  • @Michael – godt punkt! sh kunne gå et andet sted end bash.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *