0 votos

Pasar parámetros al invocar Applescript

Estoy escribiendo un applescript para automatizar algunas tareas repetitivas relacionadas con iterm.

Necesito averiguar cuál es la forma adecuada de acceder a los parámetros desde el script, digamos como en

on run {input, parameters}
    set appName to "iTerm"
    if application appName is not running then
        tell application appName to activate
    end if
    tell application "iTerm"
        tell current session of current tab of current window
            write text "cd {param1}"
        end tell
    end tell
    return input
end run

...donde debería poder realizar (suponiendo que lo anterior se guarde en myscript.scrpt ) algo así como

./myscript.scrpt /path/to/somewhere

y la línea correspondiente ejecutaría

write text "cd /path/to/somewhere"

0 votos

Su código parece ser de un Ejecutar AppleScript en un flujo de trabajo de Automator. Si ese es el caso, el input es un parámetro lista de elementos de la acción anterior, de lo contrario, edita tu post para incluir el contexto del script.

1voto

qarma Puntos 71

Su gestor de ejecución parece sacado de Automatizador pero su deseo de tenerlo como un script invocado desde el shell sugiere que está diseñado para ser ejecutado independientemente de Automatizador .

Aquí hay una forma editada del script que puedes copiar y pegar en un terminal (como iTerm ):

(:(){ paste - << SCRIPT > "$*" && chmod +x "$*"
#!/usr/bin/env osascript

on run {input} # Don't need the parameters arguments
    # set appName to "iTerm"
    # if application appName is not running then -- Not necessary since
    #    tell application appName to activate    -- activate will open it
    # end if

    tell application "iTerm"
        activate
        tell current session of current tab of current window
            write text "cd " & quoted form of the input
        end tell
    end tell
end run
SCRIPT
} ; : /path/to/my saved script )

Esto combina varias tareas en una, a saber, la creación de un archivo script en el que se guarda el texto de applescript, y luego se hace ejecutable. A continuación, para invocar:

"/path/to/my saved script" "/folder/path/parameter"

Aunque, si vas a ejecutar esto desde la terminal de todos modos, tengo curiosidad por saber por qué quieres involucrar a AppleScript en absoluto. Usted puede simplemente hacer esto:

cd () { command cd "$( eval echo "${*-$HOME}" )" ; }

Esto redefine cd para que no sea necesario citar la ruta que le pasan. Es sólo un ejemplo, y se puede reemplazar cd () con cualquier nombre para una nueva función que desee crear, e inserte los comandos que desee dentro de {...} .

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X