2012-12-16 67 views
3

我試圖寫一個簡單的AppleScript的應用程序,處理SFTP://和sshfs的:在我的Mac //網址。基於良好的guide on how to create a custom URL handler app in AppleScript,我寫a small app如下,當我點擊與相應方案的URL它工作得很好。實際工作是在一個調用sshfs(FUSE)的單獨shell腳本中完成的,我使用AppleScript來將其與操作系統連接起來。正確的處理程序,以應對「開放」的Unix命令爲自定義URL處理小程序

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 

然而,這自定義網址處理程序的AppleScript應用程序不工作,如果我使用open命令從終端,例如,

open sftp://host/path 

我嘗試添加其他處理程序,發現命令行方法調用on run argv處理不是我寫的一個,但無法弄清楚如何訪問傳遞的URL參數。當直接調用腳本時,我可以正確訪問URL,例如osascript my.applescript sftp://host/path。試過ASObjC亞軍,但沒有幫助。

在AppleScript應用程序中是否有標準處理程序或方法來接收通過open Unix命令傳遞的參數?看來它依賴於AppleEvents的,但我不能找到一個很好的參考描述如何發揮使用AppleScript命令和本地應用程序之間的相同的魔術。

回答

0

爲什麼不直接處理它在你的「上運行的軟件處理程序」?這樣的事情...

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命令不傳遞參數?

+0

感謝您的回答,但是這正是我試過了。當我使用「open」unix命令時,運行處理程序的'argv'設置爲'current application',所以'argv'的item 1給出錯誤。這是一個字符串列表,雖然我直接用osascript調用。奇怪,不是嗎? – netj