4

我正在尝试编写一个简单的 AppleScript 应用程序来处理我的 Mac 上的 sftp:// 和 sshfs:// URL。基于如何在 AppleScript 中创建自定义 URL 处理程序应用程序的良好指南,我编写了一个小应用程序,如下所示,当我单击具有相应方案的 URL 时,它运行良好。实际工作是在调​​用 sshfs(FUSE) 的单独 shell 脚本中完成的,我使用 AppleScript 只是为了将其与操作系统接口。

on open location theURL
    set cmd to (quoted form of (get POSIX path of (path to resource "sshfs.sh" in directory "Scripts"))) & " " & theUrl
    do shell script cmd
end open location

但是,如果我使用来自 Terminal的命令,此自定义 URL 处理程序 AppleScript 应用程序将不起作用open,例如,

open sftp://host/path

我尝试添加其他处理程序,发现命令行方式调用on run argv处理程序而不是我编写的处理程序,但无法弄清楚如何访问传递的 URL 参数。当直接调用脚本时,我可以正确访问 URL,例如osascript my.applescript sftp://host/path. 尝试了 ASObjC Runner,但没有帮助。

AppleScript 应用程序中是否有用于接收通过openUnix 命令传递的参数的标准处理程序或方法? 它似乎依赖于 AppleEvents,但我找不到一个很好的参考来描述如何使用 AppleScript 在命令和本机应用程序之间发挥同样的魔力。

4

1 回答 1

0

Why not just handle it in your "on run handler"? Something like this...

on run argv
    set theArg to item 1 of argv
    if theArg starts with "sftp://" then
        open location theArg
    else
        -- do the normal applescript code
    end if
end run

Or are you saying the "open" unix command doesn't pass the argument?

于 2012-12-16T08:22:34.047 回答