bash - 如何要求 Cocoa 应用程序从终端运行一个操作然后返回结果

标签 bash macos cocoa xpc

我的 Cocoa MacOS 应用程序有一个修改磁盘中某些文件的操作。 我想让这些操作可以从终端运行。

例如,如果我运行:

$ echo `myApp runAction`

这将打开应用程序,执行一些与“runAction”相关的代码,然后将结果打印到控制台。

不幸的是,由于其局限性(不能包含动态框架),我不能只制作命令行工具。

有什么制作技巧吗?

最佳答案

您应该使用 Apple Script 使您的应用程序可编写脚本。有了这个,您可以在 bash(或 zsh)中与您的应用程序“对话”,无论它是否正在运行:

osascript -e '告诉应用程序“myApp”运行Action'

或通过在脚本编辑器应用程序中编写的 AppleScript 脚本。

当应用程序未运行时,它将首先启动。

网络上有一些示例/文档足以完成基本任务,例如执行命令并返回结果:

Mac Scripter link

Making A Mac App Scriptable Tutorial (raywenderlich.com) link

就我而言,这些文档不足以完成复杂的任务,例如将参数传递给命令,但对于简单的任务,例如:

osascript -e '告诉应用程序“myApp”登录'

osascript -e '告诉应用程序“myApp”注销'

- 如果操作由于某种原因失败或成功,则 myApp 返回文字“0”或“1” -

它成功了。 osascript -e“告诉应用程序“myApp”退出”甚至是免费的。

问候, 罗伯特

关于bash - 如何要求 Cocoa 应用程序从终端运行一个操作然后返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59770513/

相关文章:

bash - 我如何删除 bash 中的 n 个新行?

php - Docker 容器关闭脚本

php - 如何在 Laravel 安装期间将我在 Mac 上的 PHP 版本与 MAMP 中安装的 PHP 版本对齐?

objective-c - 子类的sharedClient方法

linux - 如何在其他目录下创建同名目录?

bash - 如何将用户定义的 bash 函数与管道连接

php - 如何在 MacOS 上安装 MySQLi

javascript - 如果我没有 Mac 和 Safari,我该如何重现 Javascript 错误?

objective-c - 在数组 Controller 上使用谓词来过滤相关对象

cocoa - 如何在 Cocoa 中实现按钮栏