Vyvinul jsem aplikaci Java. Rozdělil jsem aplikaci na 5 dílčích aplikací a vytvořil jsem obálku služby pro každou dílčí aplikaci pomocí shell skriptů:
subaap1/bin/app.sh subaap2/bin/app.sh ...
Nyní chci vytvořit spouštěcí skript startup.sh
k provedení všech souhrnných skriptů:
#!/bin/bash sh subaap1/bin/app.sh start sh subaap2/bin/app.sh start ...
Ale když to spustím, dostanu:
Neočekávaný příkaz: start
Jak to mohu opravit?
Komentáře
- Pokud vím, tato chyba pochází z vaší aplikace. Jaký příkaz zadáte, abyste právě spustili subaap1?
Odpovědět
Neměli byste používat sh skript pro spuštění dílčích aplikací.
Stačí použít:
#!/bin/bash subaap1/bin/app.sh start subaap2/bin/app.sh start ...
Aktualizováno podle níže uvedených komentářů:
vaše verze by měla fungovat, ale potřebujete vědět, co volá shell sh. Může se stát, že máte špatný shell nebo že oprávnění k vašim aplikacím jsou nesprávná pro prostředí, které se pokoušíte použít.
Komentáře
- Jste si jisti?
bash
předá argumenty skriptu, který ' znovu spuštěno (to ' s čím másh
odkazováno); já ' Nevím o jiných skořápkách - @Michael – projde jim to, pokud použijete sh? Můžeš mít pravdu – prostě to nedělám ' je to tak. Pokud to chci udělat, vždy mě obklopím uvozovkami. Nebo jako tady, jus t remove sh a bash s radostí předpokládá, že řádek je aplikace.
- Pokusil jsem se spustit
subaap1/bin/app.sh start
z příkazového řádku a funguje to perfektně. Nyní změním skript shellu bezsh
, ale dostal jsemstartup.sh: line 2: subaap1/bin/app.sh: Permission denied
. Nějaký návrh, pane? - Ano, zkusil jsem
sh /path/to/shell/script arg
a arg to prošel. Mohlo by záležet na tom, se kterým shellemsh
je vlastně spojeno - @Michael – dobrá věc! mohl by jít někam jinam než do bash.