Macos AppleScript中正确的处理程序以响应;开放式;用于自定义URL处理小程序的Unix命令
我正在尝试编写一个简单的AppleScript应用程序,在我的Mac上处理sftp://和sshfs://URL。基于一个很好的例子,我写了如下内容,当我点击一个带有相应方案的URL时,效果很好。实际工作是在一个单独的shell脚本中完成的,该脚本调用sshfs(FUSE),我使用AppleScript只是为了将其与操作系统进行接口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
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直接调用时,它是一个字符串列表。很奇怪,不是吗?