Traduzir shell script não está funcionando dentro do Automator


3

Eu tenho este código para traduzir uma palavra de / para inglês / espanhol:

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 é de https://github.com/soimort/translate-shell/ )

Executar o script diretamente no Terminal (bash) funciona muito bem.

Mas quando eu tento usá-lo no Automator, recebo este erro:

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

Corrida gawk no Terminal também funciona bem.


ATUALIZAR : Graças ao solver abaixo, o roteiro final de trabalho para o 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" "$@"

1
o uso inútil de grep é fácil de consertar; substituir grep x | awk '{y}' com awk '/x/ {y}'
tripleee

Respostas:


3

O padrão PATH passado para o Script Executar Shell açao no Automator é:

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

Eu sempre adiciono um PATH=..., Onde ... é o real PATH usado no Terminal, na parte superior do script Run Shell açao no Automator.

Ou você tem que adicionar o nome do caminho totalmente qualificado de qualquer executável para a linha de comando que não está no padrão PATH passado para o Script Executar Shell açao no Automator.


A última linha no trans roteiro é gawk -f <(echo -E "$TRANS_PROGRAM") - "$@" e a menos gawk está no padrão PATH passou você precisará adicionar o local de gawk ao PATH você passa para o script Run Shell açao no Automator ou adicione o nome de caminho totalmente qualificado ao gawk comando no final do trans roteiro .

No uso do terminal which gawk para obter o caminho, por exemplo:

which gawk
/usr/local/bin/gawk

Em trans, mudança:

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

Para:

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

Ou no Script Executar Shell açao no Automator, por exemplo:

PATH=$PATH:/usr/local/bin

Ou use o PATH da saída de echo $PATH no terminal.


Fantástico! Obrigado! Tentei corrigir seu erro de digitação which gwak mas o site não me permite alterar menos de 6 caracteres.
Ze'ev

@ Ze'ev Ainda não tomei café esta manhã, corrigi-lo, obrigado.
user3439894
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.