如何创建将其服务名称传递给shell脚本的osx服务?

时间:2013-07-29 09:24:01

标签: macos contextmenu automator

我正在使用automator创建osx服务,以显示文件的上下文菜单项,例如dropbox如何显示下面的菜单。

Dropbox right click context menu

我知道这些不是osx服务,但我想用osx服务完成同样的事情。因此,我使用automator为Finder.app中的文件和文件夹创建了2个osx服务,并附加了一个shell脚本操作。

现在,我可以在上下文菜单中看到我的所有2项服务(与a共享,与b共享)

enter image description here

从shell脚本(针对这些服务的操作)启动应用程序。我想用文件路径和服务名称作为两个命令行参数启动应用程序。

知道如何在shell脚本中获取用户所选服务的服务名称,就像我们从命令行参数“$ @”获取文件名

1 个答案:

答案 0 :(得分:1)

  

“基本上我的目标是打开一个浏览器,其URL对于每个菜单项都是不同的。”

使用以下AppleScript可以使用AppleScript在默认Web浏览器中打开URL:

tell application "Finder" to open location "http://learnbymac.com"

可以使用以下shell脚本从shell打开URL:

open -a "Finder" "http://learnbymac.com"

使用Finder打开URL比使用Safari更好,因为当您使用Finder打开URL时,您将获得默认浏览器,而不是始终获取Safari。

  

“我将通过将路径传递到文件和服务名称来从shell脚本启动app / exe,以便应用程序可以通过从数据库中读取文件详细信息并根据服务名称构建url并加载URL在浏览器中。“

启动应用时,您可能必须在工作流程的“运行Shell脚本”操作中提供服务名称。这可能是最好的,因为如果用户更改了服务的名称,您的软件仍然会运行。我知道在工作流程的捆绑包中再次使用一次服务的名称并再次在“运行Shell脚本”操作中复制服务的名称是理想的,但我不知道如何获取当前正在运行的服务的名称。

- 凯德尔 kaydell@yahoo.com