Jak spustit sh ze souboru sh

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 bez sh, ale dostal jsem startup.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 shellem sh je vlastně spojeno
  • @Michael – dobrá věc! mohl by jít někam jinam než do bash.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *