首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从命令行应用程序运行Apple script

无法从命令行应用程序运行Apple script
EN

Stack Overflow用户
提问于 2016-04-14 18:39:38
回答 1查看 401关注 0票数 1

我为Mac OS创建了一个没有GUI的命令行应用程序。此应用程序位于/usr/local/bin。在某些情况下,我需要在该应用程序中执行Apple Script。为此,我创建了一个NSTask并尝试运行以下命令:

代码语言:javascript
复制
NSTask *createTask = [[NSTask alloc] init];
    createTask.launchPath = @"/bin/bash";
    NSString *showAlert = [NSString stringWithFormat:@"/usr/bin/osascript -e 'tell application \"Finder\" to display alert \"My text.\"'"];
    NSArray *arguments = [NSArray arrayWithObjects:@"-c",showAlert, nil];
    createTask.arguments = arguments;
[createTask launch];

运行后,什么也不会发生,只有在日志中显示以下消息:

代码语言:javascript
复制
Apr 14 15:35:15 Mac-mini kernel[0]: my-app: guarded fd exception: fd 0 code 0x2 guard 0x7fff8b9e12a8
Apr 14 15:35:15 Mac-mini com.apple.xpc.launchd[1] (com.apple.ReportCrash.Root[26852]): Endpoint has been activated through legacy launch(3) APIs. Please switch to XPC or bootstrap_check_in(): com.apple.ReportCrash.DirectoryService
Apr 14 15:35:15 Mac-mini diagnosticd[16097]: error evaluating process info - pid: 26851, punique: 26851
Apr 14 15:35:16 Mac-mini sandboxd[16099] ([26851]): my-app(26851) deny file-read-data /

但是,如果您直接从终端运行此命令,它将正确执行。请告诉我,我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2016-04-15 00:48:05

我认为问题可能出在您对引号的使用上。当我尝试在shell中以您的引用风格手动运行相同的命令时,它将不起作用。我下面的例子是可行的。你能换一下你的单引号和双引号吗?用单引号将初始调用括起来,然后在osascript两边使用双引号?此外,不需要使用tell application \"Finder\" to,因为显示警报不是查找器字典的一部分。

你有...

代码语言:javascript
复制
/usr/bin/osascript -e 'tell application \"Finder\" to display alert \"My text.\"'

尝试将其更改为...

代码语言:javascript
复制
/usr/bin/osascript -e "display alert \"My text.\""

或更简单的版本...

代码语言:javascript
复制
osascript -e "display alert \"My text.\""
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36620637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档