.sh-Dateien von der Eingabeaufforderung aus?

1371
Connor Herman

Können Sie eine .shDatei von der Windows-Eingabeaufforderung aus mit einem dieser Programme aufrufen .

Zum Beispiel:

msys myscript.sh 

Oder

c:\temp\msys.exe myscript.sh 

Ist es möglich? Da möchte ich Batch-Dateien ausführen, die .sh-Skripts auf einem meiner Systeme ausführen.

1

1 Antwort auf die Frage

1
AFH

msys.exeist einer von mehreren Ports von Unix-Befehlszeilen-Tools. Ich habe es noch nicht verwendet, msys.exescheint jedoch das Installationspaket zu sein, daher müssen Sie es ausführen und konfigurieren. Wenn Sie möchten, dass die Tools verfügbar sind und das Installationsprogramm dies nicht tut, müssen Sie das installierte Verzeichnis zu Ihrer PATHVariablen hinzufügen .

Um ein Shellskript zu interpretieren, müssen bashSie Folgendes eingeben:

bash -c myscript.exe 

Wenn alle Ihre Skripts auf enden .sh(in Unix ist keine bestimmte Erweiterung erforderlich, und oft gibt es keine), können Sie die .shErweiterung mit verknüpfen bash, sodass Sie den Skriptnamen einfach eingeben oder doppelklicken können.

Alternativ können bashSie stattdessen interativ ausführen. cmdDann werden alle Befehle wie unter Unix ausgeführt.

Zwei Punkte zu beachten: -

  • Wenn die Skripts von Unix importiert werden, werden sie korrekt interpretiert, jedoch nicht ausgeführt, wenn sie Befehle oder Ressourcen aufrufen, die entweder nicht in Windows vorhanden sind oder andere Funktionen haben.
  • Unix verwendet /als Verzeichnisseparator und -signalisiert Befehlsoptionen, während Windows \und verwendet /. Einige Unix-Befehlsports versuchen, beide Stile zu berücksichtigen, aber da /sie zwei verschiedene Bedeutungen haben, ist dies notwendigerweise ein schlechter Kompromiss. Ich habe keine Ahnung, ob das msysversucht.
Ich habe die Assoziation von `.sh` mit` bash` besprochen. Sie können es wegen des Parameters `-c nicht direkt tun, aber es ist immer noch recht einfach. AFH vor 9 Jahren 0
Wir fanden heraus, dass Sie bei der Installation von msys die .sh-Skripts in bat-Dateien umbenennen und sie einfach in der Standard-Eingabeaufforderung ausführen können. Sie haben voll funktioniert. Vielen Dank Connor Herman vor 9 Jahren 0
Fein. Sie erhalten alle installierten Programme, so dass sie von `cmd` aus zugänglich sind. Die Linux-Shell-Syntax unterscheidet sich jedoch stark von` cmd`. Daher müssen alle Bedingungen, Schleifen usw. neu codiert werden. Wenn Sie ein anderes Skript aufrufen, kehrt die Linux-Shell zurück und fährt mit dem Originalskript fort, wohingegen `cmd 'an dieses angehängt wird und nicht zurückkehrt, es sei denn, Sie gehen vor dem Aufruf mit` CALL`. Wenn das Skript einfach eine Folge von Programmen mit einfachen Pipes und Umleitungen ist, wird es in `cmd` OK ausgeführt. AFH vor 9 Jahren 0