Java alkalmazást fejlesztettem. Az alkalmazást 5 alalkalmazásra bontottam, és shell-szkriptek segítségével létrehoztam egy szolgáltatáscsomagolót az egyes alalkalmazásokhoz:
subaap1/bin/app.sh subaap2/bin/app.sh ...
Most szeretnék létrehozni egy indítási parancsfájlt startup.sh
az összes csomagoló szkript végrehajtásához:
#!/bin/bash sh subaap1/bin/app.sh start sh subaap2/bin/app.sh start ...
De amikor futtatom, a következőt kapom:
Váratlan parancs: indítás
Hogyan tudom ezt kijavítani?
Megjegyzések
- Amennyire meg tudom mondani, ez a hiba az alkalmazásából származik. Milyen parancsot ír be az subaap1 futtatásához?
Válasz
Nem kell sh-t használni szkripted az alalkalmazások futtatásához.
Csak a következőt használja:
#!/bin/bash subaap1/bin/app.sh start subaap2/bin/app.sh start ...
Frissítve az alábbi megjegyzések szerint:
a verziójának működnie kell, azonban tudnia kell, hogy mit hív a sh sh. Lehet, hogy rossz a shell vagy az alkalmazások engedélyei nem megfelelőek a használni kívánt héjhoz.
Megjegyzések
- Biztos vagy benne?
bash
továbbítja az argumentumokat a szkriptnek, amelyet ' újra fut (ez ' s, amihez ash
szimbólum kapcsolódik); nem ' nem tudok más héjakról - @Michael – átengedi őket, ha sh-t használsz? Igazad lehet – csak nem ' nem mindig így idézem idézeteket, ha ezt akarom tenni. Vagy mint itt, jus ne távolítsd el az sh-t, és bash örömmel feltételezi, hogy a sor alkalmazás.
- Megpróbáltam végrehajtani a
subaap1/bin/app.sh start
parancssort, és tökéletesen működik. Most megváltoztatom a shell parancsfájltsh
nélkül, de megkaptam astartup.sh: line 2: subaap1/bin/app.sh: Permission denied
fájlt. Van valami javaslata, uram? - Igen, kipróbáltam a
sh /path/to/shell/script arg
t, és az arg végigment. Lehet, hogy attól függ, hogy ash
héj valóban összekapcsolódik-e - @Michael – jó! sh máshová mehetett, mint a bash.