Am dezvoltat o aplicație Java. Am împărțit aplicația în 5 subaplicări și am creat un pachet de servicii pentru fiecare aplicație secundară folosind scripturi shell:
subaap1/bin/app.sh subaap2/bin/app.sh ...
Acum vreau să creez un script de pornire startup.sh
pentru a executa toate scripturile de împachetare:
#!/bin/bash sh subaap1/bin/app.sh start sh subaap2/bin/app.sh start ...
Dar când îl rulez, primesc:
Comandă neașteptată: start
Cum pot remedia acest lucru?
Comentarii
- Din câte îmi dau seama, această eroare provine din aplicația dvs. Ce comandă tastați pentru a rula doar subaap1?
Răspuns
Nu ar trebui să utilizați sh în scriptul dvs. pentru a rula aplicațiile secundare.
Folosiți doar:
#!/bin/bash subaap1/bin/app.sh start subaap2/bin/app.sh start ...
Actualizat conform comentariilor de mai jos:
versiunea dvs. ar trebui să funcționeze, totuși trebuie să știți la ce apel shell Sh. Poate că aveți un shell greșit sau permisiunile aplicațiilor dvs. sunt incorecte pentru shell-ul pe care încercați să îl utilizați.
Comentarii
- Sunteți sigur?
bash
va transmite argumentele către scriptul pe care ' se execută (că ' este ceea cesh
este asociat); nu ' nu știu despre alte cochilii - @Michael – le va trece dacă folosiți sh? Ați putea avea dreptate – nu
nu fac Îl înconjoară întotdeauna pe ghilimele, dacă vreau să fac asta. Sau ca aici, jus Eliminați sh și bash este încântat să presupună că linia este o aplicație.
subaap1/bin/app.sh start
din linia de comandă și funcționează perfect. Acum schimb scriptul shell fără sh
, dar am primit startup.sh: line 2: subaap1/bin/app.sh: Permission denied
. Aveți vreo sugestie, domnule? sh /path/to/shell/script arg
și argumentul a reușit. S-ar putea să depindă de ce shell sh
este de fapt legat deși