automator pour exécuter AppleScript pour un script shell


2

Pour un fichier sélectionné dans le Finder, j'aime exécuter un script Perl à l'aide de Services. J'ai créé un processus Automator qui exécute 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

Le seul problème est que le nom de fichier sélectionné apparaît comme suit:

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

que le script Perl ne peut pas comprendre. Comment puis-je en faire un nom de fichier de type UNIX?

Réponses:


4

Vous aurez besoin du chemin POSIX du fichier d'entrée:

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

J'ai trouvé la réponse chez StackOverflow .


1

Vous pouvez également utiliser quoted form ofpour échapper aux 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

Ou si le service peut recevoir plusieurs fichiers en entrée:

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.