Terjemahkan skrip shell yang tidak berfungsi dalam Automator


3

Saya memiliki kode ini untuk menerjemahkan kata dari / ke bahasa Inggris / Spanyol:

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"

( transberasal dari https://github.com/soimort/translate-shell/ )

Menjalankan skrip langsung di Terminal (bash) berfungsi dengan baik.

Tetapi ketika saya mencoba menggunakannya di Automator, saya mendapatkan kesalahan ini:

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

Menjalankan gawkdi Terminal juga berfungsi dengan baik.


PEMBARUAN : Terima kasih kepada pemecah di bawah ini, skrip akhir untuk automator yang berfungsi adalah:

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
Penggunaan yang tidak bergunagrep mudah diperbaiki; ganti grep x | awk '{y}'denganawk '/x/ {y}'
tripleee

Jawaban:


2

Default PATHditeruskan ke Run Shell Script aksi di Automator adalah:

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

Saya selalu menambahkan PATH=..., mana ...adalah yang sebenarnya PATHdigunakan dalam Terminal, ke atas Run Shell Script aksi di Automator.

Atau Anda harus menambahkan pathname yang memenuhi syarat dari setiap executable ke baris perintah yang tidak default PATHditeruskan ke Run Shell Script aksi di Automator.


Baris terakhir dalam trans naskah adalah gawk -f <(echo -E "$TRANS_PROGRAM") - "$@"dan kecuali gawkdalam default PATHlulus Anda harus menambahkan lokasi gawkke PATHAnda lulus ke Run Shell Script aksi di Automator, atau menambahkan nama path yang memenuhi syarat dengan gawkperintah pada akhir trans Script .

Di Terminal gunakan which gawkuntuk mendapatkan jalurnya, misalnya:

which gawk
/usr/local/bin/gawk

Di trans, ubah:

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

Untuk:

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

Atau di Run Shell Script aksi di Automator, misalnya:

PATH=$PATH:/usr/local/bin

Atau gunakan PATHdari output echo $PATHdi Terminal.


Fantastis! Terima kasih! Mencoba memperbaiki kesalahan ketik Anda which gwaktetapi situs tidak akan membiarkan saya mengubah kurang dari 6 karakter.
Dan

@ Ze'ev Belum minum kopi pagi ini, saya memperbaikinya, terima kasih.
user3439894
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.