Traduci lo script di shell che non funziona in Automator

3

Ho questo codice per tradurre una parola da / in inglese / spagnolo:

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 deriva da link )

L'esecuzione dello script direttamente in Terminal (bash) funziona alla grande.

Ma quando provo ad usarlo in Automator, ottengo questo errore:

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

L'esecuzione di gawk in Terminal funziona anche bene.

UPDATE : grazie al risolutore di seguito, lo script di lavoro finale per 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" "$@"
    
posta Ze'ev 27.01.2017 - 10:15
fonte

1 risposta

3

Il valore predefinito di% co_de passato allo script Esegui script shell azione in Automator è:

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

Aggiungo sempre un PATH , dove PATH=... è il% effettivo di co_de utilizzato in Terminale, fino all'inizio dello script di shell azione in Automator.

Oppure devi aggiungere il nome di percorso completo di qualsiasi eseguibile alla riga di comando che non è nel% di default... passato all'esecuzione di Azione di Shell Script in Automator.

L'ultima riga nello script PATH è PATH e a meno che trans sia nel% predefinitogawk -f <(echo -E "$TRANS_PROGRAM") - "$@" passato dovrai aggiungere il percorso di gawk al PATH si passa a Esegui script shell azione in Automator oppure aggiungi il nome percorso completo al comando gawk alla fine dello script PATH .

Nel terminale usa gawk per ottenere il suo percorso, ad esempio:

which gawk
/usr/local/bin/gawk

In trans , modifica:

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

A:

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

O in Esegui script shell azione in Automator, ad esempio:

PATH=$PATH:/usr/local/bin

Oppure usa which gawk dall'output di trans in Terminale.

    
risposta data 27.01.2017 - 12:46
fonte

Leggi altre domande sui tag