un autómata para ejecutar AppleScript para un script de shell

Para un file seleccionado en Finder, me gusta ejecutar un script de Perl usando Servicios. Creé un process de Automator que ejecuta un AppleScript:

on run {input, parameters} tell application "Terminal" activate do script "/Users/myaccountname/Applications/TeXcount_3_0/texcount.pl \"" & (input as string) & "\"" end tell end run 

El único problema es que el nombre de file seleccionado aparece como algo como:

 "Macintosh HD:Users:myaccountname:Documents:texfile.tex" 

que la secuencia de commands de perl no puede entender. ¿Cómo puedo hacer que sea un nombre de file UNIX?

  • ¿Qué hay de malo en esta Perl Regex en OSX?
  • openpgp2ssh (herramienta monkeysphere) instalado con Homebrew en el error OS X No se puede ubicar Crypt / OpenSSL / Bignum.pm en @INC
  • ¿Apache requiere una configuration especial para ejecutar un command?
  • ¿Cómo pasar una variable AppleScript al script Perl?
  • ¿Cómo funciona Perl DBD :: mysql en OS X 10.7?
  • Cómo implementar esta secuencia de commands en una Mac
  • ¿Para excluir files bak en la búsqueda de Finder?
  • Encuentra y reemplaza con grep y perl
  • 2 Solutions collect form web for “un autómata para ejecutar AppleScript para un script de shell”

    Necesitará get la ruta POSIX del file de input:

     on run {input, parameters} tell application "Terminal" activate do script "/Users/myaccountname/Applications/TeXcount_3_0/texcount.pl \"" & ( POSIX path of input as string) & "\"" end tell end run 

    Encontré la respuesta en StackOverflow .

    También puede usar la quoted form of para escaping de los arguments:

     on run {input, parameters} tell application "Terminal" do script "printf %s\\\\n " & quoted form of POSIX path of item 1 of input & ">/tmp/a" end tell end run 

    O si el service puede recibir múltiples files como input:

     on run {input, parameters} set args to "" repeat with f in input set args to args & " " & quoted form of POSIX path of f end repeat tell application "Terminal" do script "printf %s\\\\n " & args & ">/tmp/a" end tell end run 
    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).