automator para ejecutar AppleScript para un script de shell

2

Para un archivo seleccionado en Finder, me gusta ejecutar un script perl usando Servicios. Creé un proceso 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 archivo seleccionado aparece como algo así como:

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

que el script de perl no puede entender. ¿Cómo puedo hacer que sea un nombre de archivo similar a UNIX?

    
pregunta Chang 18.12.2013 - 06:35

2 respuestas

4

Deberá obtener la ruta POSIX del archivo de entrada:

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 .

    
respondido por el Lasse 18.12.2013 - 11:02
1

También puedes usar quoted form of para escapar de los argumentos:

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 servicio puede recibir varios archivos como entrada:

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
    
respondido por el user495470 19.12.2013 - 17:10

Lea otras preguntas en las etiquetas