Übersetzungs-Shell-Skript funktioniert nicht in Automator

Ich habe diesen Code, um ein Wort von/nach Englisch/Spanisch zu übersetzen:

S=`/usr/local/bin/trans -b -id -no-ansi "$a" | grep Code | awk '{print $2}'`
if [ "$S" = "en" ]; then T=es; else T=en; fi
/usr/local/bin/trans -b :"$T" "$a"

( transist von https://github.com/soimort/translate-shell/ )

Das Ausführen des Skripts direkt im Terminal (bash) funktioniert hervorragend.

Aber wenn ich versuche, es in Automator zu verwenden, erhalte ich diesen Fehler:

/usr/local/bin/trans: line 5073: gawk: command not found

Das Ausführen gawkim Terminal funktioniert auch einwandfrei.


UPDATE : Dank des untenstehenden Lösers lautet das endgültige Arbeitsskript für den Automator:

PATH=$PATH:/usr/local/bin
S=`/usr/local/bin/trans -b -id -no-ansi "$@" | grep Code | awk '{print $2}'`
if [ "$S" = "en" ]; then T=es; else T=en; fi
/usr/local/bin/trans -b :"$T" "$@"
Die nutzlose Verwendung vongrep ist leicht zu beheben; grep x | awk '{y}'durch ersetzenawk '/x/ {y}'

Antworten (1)

Der Standardwert PATH, der an die Aktion Shell-Skript ausführen in Automator übergeben wird, ist:

/usr/bin:/bin:/usr/sbin:/sbin

Ich füge immer oben in der Aktion „Run Shell Script“ in Automator ein , PATH=...wobei ...das tatsächlich in Terminal verwendete ist .PATH

Oder Sie müssen den vollständig qualifizierten Pfadnamen einer beliebigen ausführbaren Datei zur Befehlszeile hinzufügen, die nicht standardmäßig an die AktionPATH Shell-Skript ausführen in Automator übergeben wird.


Die letzte Zeile im trans Skript ist gawk -f <(echo -E "$TRANS_PROGRAM") - "$@"und sofern gawksie nicht standardmäßig PATHübergeben wird, müssen Sie den Speicherort von zu hinzufügen, gawkden Sie an die AktionPATH „Shell-Skript ausführen“ in Automator übergeben , oder den vollständig qualifizierten Pfadnamen zum Befehl am Ende von hinzufügen Skript .gawktrans

Verwenden Sie im Terminal, which gawkum seinen Pfad zu erhalten, z. B.:

which gawk
/usr/local/bin/gawk

In transändern:

gawk -f <(echo -E "$TRANS_PROGRAM") - "$@"

Zu:

/usr/local/bin/gawk -f <(echo -E "$TRANS_PROGRAM") - "$@"

Oder in der Aktion Run Shell Script in Automator, zB:

PATH=$PATH:/usr/local/bin

Oder verwenden Sie die PATHaus der Ausgabe von echo $PATHin Terminal.

Fantastisch! Danke! Ich habe versucht, Ihren Tippfehler zu korrigieren which gwak, aber die Website lässt mich nicht weniger als 6 Zeichen ändern.
@Ze'ev Ich hatte heute Morgen noch keinen Kaffee, ich habe es repariert, danke.