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
相关产品推荐
相关产品推荐

