Macos AppleScript中正确的处理程序以响应;开放式;用于自定义URL处理小程序的Unix命令

Macos AppleScript中正确的处理程序以响应;开放式;用于自定义URL处理小程序的Unix命令,macos,url,applescript,appleevents,Macos,Url,Applescript,Appleevents,我正在尝试编写一个简单的AppleScript应用程序,在我的Mac上处理sftp://和sshfs://URL。基于一个很好的例子,我写了如下内容,当我点击一个带有相应方案的URL时,效果很好。实际工作是在一个单独的shell脚本中完成的,该脚本调用sshfs(FUSE),我使用AppleScript只是为了将其与操作系统进行接口 on open location theURL set cmd to (quoted form of (get POSIX path of (path to

我正在尝试编写一个简单的AppleScript应用程序,在我的Mac上处理sftp://和sshfs://URL。基于一个很好的例子,我写了如下内容,当我点击一个带有相应方案的URL时,效果很好。实际工作是在一个单独的shell脚本中完成的,该脚本调用sshfs(FUSE),我使用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
但是,如果我使用终端的
打开
命令,则此自定义URL处理程序AppleScript应用程序不起作用,例如

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


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

为什么不在“运行处理程序”中处理它呢?像这样的

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

或者您是说“open”unix命令无法通过参数?

谢谢您的回答,但这正是我所尝试的。当我使用“打开”unix命令时,运行处理程序的
argv
以某种方式被设置为
current application
,因此argv的
项1给出了一个错误。不过,当我使用osascript直接调用时,它是一个字符串列表。很奇怪,不是吗?