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:

  • Encuentra y reemplaza con grep y perl
  • ¿Cómo reinstalar Mac OS X integrado en Perl en Mountain Lion?
  • Cómo instalar Monkeysphere en OSX El Capitan
  • ¿Qué hay de malo en esta Perl Regex en OSX?
  • Invocar script Perl en Windows desde OS X
  • Cómo implementar esta secuencia de commands en una Mac
  •  "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?

  • ¿Cómo funciona Perl DBD :: mysql en OS X 10.7?
  • Cómo implementar esta secuencia de commands en una Mac
  • Cómo instalar Monkeysphere en OSX El Capitan
  • ¿Cuál es la versión de Lion de Perl 5?
  • El Capitan SIP y CPAN
  • ¿Cómo pasar una variable AppleScript al script 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).