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, mihinsh
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 ilmansh
, mutta sainstartup.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 kuoreensh
on tosiasiallisesti yhteys. - @Michael – hyvä asia! hän voisi mennä muualle kuin bashiin.