Wie kann ich Shell-Skript in Automator echoen?

Ich habe einen Automator-Dienst, der ein Shell-Skript ausführt (Befehl ffmpeg).
Ich suche nach einer Möglichkeit, die Ausgabe des Terminals zu sehen, während ffmpeg seine Sache erledigt.
Das Hinzufügen echozum ffmpeg-Befehl funktioniert nicht. Ich habe gelesen, dass dies mit AppleScript erreicht werden kann, aber ich möchte nach Möglichkeit in Bash bleiben.
Außerdem wäre es einfach genial, einen Fortschrittsbalken der Transcodierung anzuzeigen.
So sieht meine Automator-Aktion aus:
Geben Sie hier die Bildbeschreibung ein

Das Problem könnte eher Automator-bezogen sein (weil das Ausführen von ffmpeg direkt in der Shell eine Ausgabe erzeugt). Gibt es also einen bestimmten Grund, warum Sie überhaupt Automator (anstelle eines Shell-Skripts) verwenden?
Können Sie der Frage auch einen Screenshot Ihres Automator-Workflows hinzufügen (verwenden Sie dazu die Schaltfläche Bearbeiten unten)?
Mit dem Automator-Dienst kann ich mit der rechten Maustaste auf eine Mediendatei klicken, um den Codierungsauftrag zu starten. Außerdem fordere ich den Benutzer auf, ein Zielverzeichnis für die codierte Datei anzugeben.

Antworten (1)

Damit Ihr Shell-Skript (Bash) kontinuierlich auf dem Bildschirm ausgegeben wird, damit Sie den Fortschritt sehen können, müssen Sie es von AppleScript aus starten. Im Grunde ist dies ein Skript, das ein anderes Skript startet. Verwenden Sie das folgende Skript, um das Skript zu starten, das Ihren ffmpeg-Befehl enthält. Sie können sogar wie gewohnt Argumente an Ihr Skript übergeben.

Für dieses Beispiel habe ich ein einfaches Bash-Skript, das das erste Befehlszeilenargument ausgibt.

#! /bin/bash
# test.sh
echo $1
exit

Als nächstes kommt der AppleScript-Code, der das Bash-Skript startet

tell application "Terminal"
   do script "<path>/test.sh 'Hello World'; exit"
   activate
end tell

Beachten Sie, dass Zeichenfolgen mit Leerzeichen, die Sie übergeben müssen, in einfache Anführungszeichen gesetzt werden MÜSSEN . Doppelte Anführungszeichen verursachen einen Fehler in AppleScript.

Wenn Sie das Skript ausführen, öffnet es ein Terminalfenster und alles, was ausgegeben wird, wird auf dem Bildschirm angezeigt.

In der Konsole sehe ich keine ffmpeg- oder Bash-Ausgabe. Ich sehe "Automator Runner" und "WindowServer" ... Außerdem, wie würden Sie "den Inhalt der Variablen ausgeben"? Aktion Ergebnisse anzeigen? Vielleicht Benachrichtigungsaktion anzeigen?
Hoppla ... Ich habe vergessen, die Weiterleitung zur Konsole hinzuzufügen. Ich habe per Antwort bearbeitet.
Deine Hilfe ist sehr Willkommen. Die Konsole zeigt jedoch während des Laufs immer noch keine ffmpeg-bezogene Ausgabe an. Muss ich vorher eine Falle oder ähnliches für den Prozess stellen? Außerdem gibt mir Ihr Vorschlag, den Befehl als Variable festzulegen, nicht die gewünschte Ausgabe, wenn er nach Abschluss des Prozesses ausgeführt wird, und gibt mir daher keinen Echtzeitstatus der Konvertierung :(
Wenn Sie die Ausgabe nur zum Testen in eine Datei umleiten, funktioniert das? Fügen Sie einfach > test.txt am Ende der ffmpeg-Datei hinzu.
Ich habe den "Fortschrittsbalken" nicht damit in Verbindung gebracht, die Ausgabe in Echtzeit sehen zu wollen. Ich habe meine Antwort überarbeitet - dies sollte die Ausgabe wie gewünscht anzeigen.
Danke @Allan. Wie würde ich in Ihrem Beispiel die Automator-Variablen (Zielordner und Eingabedatei) an das Skript übergeben? Ich fange an, die Tatsache zu akzeptieren, dass ich AppleScript verwenden sollte ...
Sie würden sie wie gewohnt passieren. Ich habe die Antwort hinzugefügt, damit Sie sehen können, wie es funktioniert.