You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AppleScript Objective-C无法捕获Shell命令输出及脚本语法错误求助

解决AppleScript中执行Shell命令并捕获输出的语法问题

看起来你在AppleScript里直接把Shell命令字符串赋值给变量,这是导致语法错误的核心原因——AppleScript不会自动执行字符串里的命令,必须用do shell script关键词来触发外部命令执行并捕获它的输出。

我帮你修正了代码,同时加上了错误处理逻辑,这样能更直观地看到问题所在:

on Button_(sender)
    -- 先把Shell命令存成变量(可选,但更易维护)
    set printerLookupCommand to "/usr/local/bin/iprntcmd --listprintersonserver printerserver.com"
    
    try
        -- 用do shell script执行命令,捕获输出到变量
        set printerList to do shell script printerLookupCommand
        -- 弹窗展示结果
        display alert "可用打印机列表" message printerList
    on error errMsg
        -- 捕获执行过程中的错误,比如命令不存在、服务器连接失败等
        display alert "执行出错" message "错误详情:" & errMsg
    end try
end Button_

几个关键要点:

  • do shell script是AppleScript执行外部Shell命令的标准方式,它会返回命令的标准输出,直接存入变量即可
  • 加上try...on error块很重要:如果命令执行失败(比如路径错了、服务器不可达),脚本不会直接崩溃,还能告诉你具体的错误信息
  • 确认/usr/local/bin/iprntcmd的路径是否正确:可以在终端里输入which iprntcmd验证,确保路径和脚本里一致
  • 如果命令需要管理员权限,就在do shell script后面加上with administrator privileges,比如:
    set printerList to do shell script printerLookupCommand with administrator privileges
    

你可以把这段代码放到Script Editor里测试,应该就能正常捕获命令输出并弹窗展示了。

内容的提问来源于stack exchange,提问作者Nick West

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:35:17