Sh: n suorittaminen sh-tiedostosta

Kehitin Java-sovelluksen. Jaoin sovelluksen viiteen alisovellukseen ja loin palvelukääreen kuhunkin alisovellukseen käyttämällä komentosarjoja:

subaap1/bin/app.sh subaap2/bin/app.sh ... 

Haluan nyt luoda käynnistysohjelman startup.sh suorittaa kaikki kääreohjelmat:

#!/bin/bash sh subaap1/bin/app.sh start sh subaap2/bin/app.sh start ... 

Mutta kun suoritan sen, saan:

Odottamaton komento: Käynnistä

Kuinka korjaan tämän?

Kommentit

  • Sikäli kuin voin kertoa, virhe tulee sovelluksestasi. Mitä komentoja kirjoitat vain suorittaaksesi subaap1?

Vastaa

Sinun ei tarvitse käyttää sh: tä komentosarjan avulla voit suorittaa alisovelluksesi.

Käytä vain:

#!/bin/bash subaap1/bin/app.sh start subaap2/bin/app.sh start ... 

Päivitetty alla olevien kommenttien mukaisesti:

version pitäisi toimia, mutta sinun on kuitenkin tiedettävä, mitä shell sh kutsuu. Saattaa olla, että sinulla on väärä kuori tai sovelluksesi käyttöoikeudet ovat virheelliset käyttämääsi kuoreen nähden.

Kommentit

  • Oletko varma? bash välittää argumentit komentosarjalle, jonka ' käynnissä (että ' s, mihin sh on linkitetty); en ' ei tiedä muista kuorista
  • @Michael – välittääkö se ne, jos käytät sh: tä? Voisit olla oikeassa – en vain ' t Ympärän omani aina lainausmerkeissä, jos haluan tehdä sen. Tai kuten täällä, jus t poista sh ja bash olettaa mielellään, että rivi on sovellus.
  • Olen yrittänyt suorittaa subaap1/bin/app.sh start komentoriviltä, ja se toimii täydellisesti. Muutan nyt komentotulkkikomentoa ilman sh, mutta sain startup.sh: line 2: subaap1/bin/app.sh: Permission denied. Onko ehdotusta sir?
  • Kyllä, yritin sh /path/to/shell/script arg ja arg selviytyi siitä. Se voi riippua siitä, mihin kuoreen sh on tosiasiallisesti yhteys.
  • @Michael – hyvä asia! hän voisi mennä muualle kuin bashiin.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *