Cum se execută sh din fișierul sh

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 ce sh 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.

  • Am încercat să execut 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?
  • Da, am încercat 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
  • @Michael – punct bun! ar putea merge în altă parte decât bash.
  • Lasă un răspuns

    Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *