automator per eseguire AppleScript per uno script di shell

2

Per un file selezionato in Finder, mi piace eseguire uno script perl usando Servizi. Ho creato un processo di Automator che esegue 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

L'unico problema è che il nome file selezionato appare come qualcosa del tipo:

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

che lo script perl non può capire. Come posso renderlo un nome di file simile a UNIX?

    
posta Chang 18.12.2013 - 06:35
fonte

2 risposte

4

Avrai bisogno di ottenere il percorso POSIX del file di 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

Ho trovato la risposta su StackOverflow .

    
risposta data 18.12.2013 - 11:02
fonte
1

Puoi anche usare quoted form of per sfuggire agli argomenti:

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 se il servizio può ricevere più file come 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
    
risposta data 19.12.2013 - 17:10
fonte

Leggi altre domande sui tag