Traducir script de shell no funciona dentro de Automator

3

Tengo este código para traducir una palabra de / a inglés / español:

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"

( trans es de enlace )

Ejecutar el script directamente en Terminal (bash) funciona muy bien.

Pero cuando trato de usarlo en Automator, recibo este error:

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

La ejecución de gawk en la Terminal también funciona bien.

ACTUALIZACIÓN : gracias al solucionador a continuación, el script de trabajo final para automator es:

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" "$@"
    
pregunta Ze'ev 27.01.2017 - 10:15

1 respuesta

3

El PATH predeterminado que se pasa a la acción de Shell Shell en Automator es:

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

Siempre agrego un PATH=... , donde ... es el PATH real usado en la Terminal, en la parte superior de la acción Ejecutar Shell Script en Automator.

O debe agregar la ruta de acceso completa de cualquier ejecutable a la línea de comandos que no esté en el PATH predeterminado pasado a la acción Ejecutar shell script en Automator.

La última línea del trans script es gawk -f <(echo -E "$TRANS_PROGRAM") - "$@" y, a menos que gawk esté en el PATH pasado, deberá agregar la ubicación de gawk a la PATH que pasa a la acción del shell shell en Automator, o agregue la ruta de acceso completa al comando gawk al final de la secuencia de comandos trans .

En la Terminal usa which gawk para obtener su ruta, por ejemplo:

which gawk
/usr/local/bin/gawk

En trans , cambiar:

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

Para:

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

O en la acción Ejecutar shell script en Automator, por ejemplo:

PATH=$PATH:/usr/local/bin

O use el PATH de la salida de echo $PATH en la Terminal.

    
respondido por el user3439894 27.01.2017 - 12:46

Lea otras preguntas en las etiquetas