Die Apple-Befehlsdatei wird vorzeitig beendet

2

Ich habe ein .commandSkript geschrieben, das beim Starten einfach beendet wird und zu schnell anzeigt, was los ist. Wie halte ich es offen?

Kit Sunde
quelle

Antworten:

8

Wenn Sie .commandim Finder auf a doppelklicken, wird das Terminal geöffnet und ausgeführt. /path/to/your.command ; exit;Am exitEnde wird die Shell verlassen, und Sie haben die Voreinstellungen des Terminals festgelegt, um das Fenster zu schließen, wenn dies geschieht.

  • Gehen Sie zu Terminal -> Einstellungen -> Einstellungen -> Welches Thema auch immer als Standard markiert ist -> Shell -> Wenn die Shell beendet wird: und wählen Sie "Fenster nicht schließen".

Alternativ, wenn Sie die Einstellungen des Terminals nicht ändern möchten:

  • Wenn Ihr Befehl etwas an STDOUT ausgibt, das Sie nach dem Beenden des Befehls lesen möchten, können Sie die Ausgabe des Befehls weiterleiten. Diese lessbleibt dann geöffnet, sodass Sie mit den Pfeiltasten durch die Ausgabe scrollen können, bis Sie sie mit beenden q. Fügen Sie einfach |lessdas Ende des Befehls in Ihrem Skript hinzu.

BEARBEITEN:

  • Fand eine flexiblere Option. Wenn das Weiterleiten von Daten lessaus irgendeinem Grund nicht praktikabel ist oder Ihr Skript zu kompliziert ist, können Sie einen letzten Befehl hinzufügen, der vor dem Abschluss auf Eingaben des Benutzers wartet. ich benutzte
$ read -n 1 -p "Fertig. Drücken Sie eine beliebige Taste, um den Vorgang zu beenden."

(Warten Sie auf ein Zeichen der Eingabe, während die Eingabeaufforderung angezeigt wird.)

NReilingh
quelle
Vielen Dank! Ich dachte darüber nach, den Befehl weiterzuleiten, aber das Problem ist, dass der Befehl einwandfrei funktioniert, wenn ich ihn über die Befehlszeile ausführe, aber nicht, wenn ich ihn aus irgendeinem Grund über den Finder öffne.
Kit Sunde
1
Sie sollten gefragt haben, warum der Befehl beim Öffnen im Finder nicht funktioniert, anstatt der Frage, die Sie tatsächlich gestellt haben :). Auch das Einfügen von Quellcode ist sehr hilfreich.
Jason Salaz
@JasonSalaz Nein, diese Frage ging an stackoverflow. Mein Fenster offen zu halten, ist ein separates Problem.
Kit Sunde
Ich erinnerte mich an die Tatsache, dass .command Shell-Scripting und nicht Applescripting ist, was bedeutet, dass es hier auf Ask Different nicht zum Thema gehört. Also hast du genau das Richtige getan. Danke.
Jason Salaz