我正在尝试编写一个简单的 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 应用程序中是否有用于接收通过open
Unix 命令传递的参数的标准处理程序或方法? 它似乎依赖于 AppleEvents,但我找不到一个很好的参考来描述如何使用 AppleScript 在命令和本机应用程序之间发挥同样的魔力。