So führen Sie sh aus der sh-Datei aus

Ich habe eine Java-Anwendung entwickelt. Ich habe die Anwendung in 5 Unteranwendungen unterteilt und mithilfe von Shell-Skripten einen Service-Wrapper für jede Unteranwendung erstellt:

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

Jetzt möchte ich ein Startskript erstellen startup.sh, um alle Wrapper-Skripte auszuführen:

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

Aber wenn ich es ausführe, erhalte ich:

Unerwarteter Befehl: start

Wie kann ich das beheben?

Kommentare

  • Soweit ich das beurteilen kann, kommt dieser Fehler von Ihrer Anwendung. Welchen Befehl geben Sie ein, um nur subaap1 auszuführen?

Antwort

Sie sollten sh in nicht verwenden müssen Ihr Skript zum Ausführen Ihrer Unteranwendungen.

Verwenden Sie einfach:

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

Aktualisiert gemäß den folgenden Kommentaren:

Ihre Version sollte funktionieren, Sie müssen jedoch wissen, welche Shell sh aufruft. Möglicherweise haben Sie die falsche Shell oder die Berechtigungen für Ihre Apps sind für die Shell, die Sie verwenden möchten, falsch.

Kommentare

  • Sind Sie sicher? bash leitet die Argumente an das Skript weiter, das Sie ' wird erneut ausgeführt (das ist ', womit meine sh verknüpft ist); ich ' weiß nichts über andere Shells
  • @Michael – wird es sie passieren, wenn du sh verwendest? Du könntest Recht haben – ich tue es einfach nicht ' Ich umgeben meine immer in Anführungszeichen, wenn ich das tun möchte. Oder wie hier, jus t Entfernen Sie sh und bash geht gerne davon aus, dass es sich bei der Zeile um eine Anwendung handelt.
  • Ich habe versucht, subaap1/bin/app.sh start über die Befehlszeile auszuführen, und es funktioniert einwandfrei. Jetzt ändere ich das Shell-Skript ohne sh, aber ich habe startup.sh: line 2: subaap1/bin/app.sh: Permission denied. Irgendein Vorschlag, Sir?
  • Ja, ich habe sh /path/to/shell/script arg ausprobiert und der Arg hat es geschafft. Es kann davon abhängen, mit welcher Shell sh tatsächlich verknüpft ist, obwohl
  • @Michael – guter Punkt! Sie könnten an einen anderen Ort als Bash gehen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.