Jak uruchomić sh z pliku sh

Stworzyłem aplikację w języku Java. Podzieliłem aplikację na 5 aplikacji podrzędnych i utworzyłem opakowanie usługi dla każdej aplikacji podrzędnej za pomocą skryptów powłoki:

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

Teraz chcę utworzyć skrypt startowy startup.sh, aby wykonać wszystkie skrypty opakowania:

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

Ale kiedy go uruchomię, otrzymuję:

Nieoczekiwane polecenie: start

Jak mogę to naprawić?

Komentarze

  • O ile wiem, ten błąd pochodzi z Twojej aplikacji. Jakie polecenie wpisujesz, aby po prostu uruchomić subaap1?

Odpowiedź

Nie należy używać sh w skrypt do uruchamiania aplikacji podrzędnych.

Po prostu użyj:

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

Zaktualizowano zgodnie z poniższymi komentarzami:

Twoja wersja powinna działać, ale musisz wiedzieć, którą powłokę wywołuje sh. Możliwe, że masz niewłaściwą powłokę lub uprawnienia aplikacji są nieprawidłowe dla powłoki, której próbujesz użyć.

Komentarze

  • Czy na pewno? bash przekaże argumenty do skryptu, który ' działa (to ' jest tym, do czego moje sh jest dowiązane symbolicznie); Nie ' nie wiem o innych powłokach
  • @Michael – czy przejdzie przez nie, jeśli użyjesz sh? Możesz mieć rację – po prostu nie ' nie Jeśli chcę to zrobić, zawsze otaczam je cudzysłowami, albo jak tutaj, jus t usuń sh, a bash z przyjemnością zakłada, że ta linia jest aplikacją.
  • Próbowałem wykonać subaap1/bin/app.sh start z wiersza poleceń i działa idealnie. Teraz zmieniłem skrypt powłoki bez sh, ale otrzymałem startup.sh: line 2: subaap1/bin/app.sh: Permission denied. Masz jakieś sugestie?
  • Tak, próbowałem sh /path/to/shell/script arg i udało się. Może to zależeć od tego, do której powłoki sh jest faktycznie dowiązana
  • @Michael – dobra uwaga! sh mógłby iść gdzieś indziej niż bash.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *