从菜单栏脚本菜单运行Shell脚本,控制台输出捕获位置及调试咨询
解决脚本菜单运行Shell脚本无输出的问题
我懂这种找不到输出的烦躁!当从Script Editor的脚本菜单运行Shell脚本时,系统的输出路径确实和Terminal里不一样,给你几个靠谱的排查方法:
- 直接在脚本里重定向输出到文件
这是最省心的办法,修改你的Shell脚本,把所有标准输出和错误信息都定向到一个本地文件里。比如在脚本的最开头加上这行:
exec > ~/script_menu_log.txt 2>&1
这样不管脚本在哪运行,所有的输出(包括报错)都会被存到~/script_menu_log.txt里,你直接打开这个文件就能看到问题所在了。
查看Script Editor内置日志
其实Script Editor本身就自带日志功能,你打开Script Editor后,点击顶部菜单栏的Window > Log(或者用快捷键Cmd + L),这个窗口会实时显示从脚本菜单运行的脚本的输出和错误信息,很多时候这里就能找到你要的线索。精准查找Console app的日志
你之前在Console里没找到,大概率是没找对位置。打开Console后,在搜索框输入Script Menu或者你的脚本文件名,然后在左侧导航栏的Reports或Log Reports分类里翻找;另外也可以直接查看本地日志目录~/Library/Logs/com.apple.ScriptEditor2,里面的文件会记录脚本菜单相关的运行细节。用AppleScript包裹Shell脚本捕获错误
如果上面的方法都没效果,你可以把Shell脚本用AppleScript包一层,这样能更直观地捕获错误。比如写一个简单的AppleScript:
try do shell script "/绝对路径/到你的脚本.sh" on error errorMessage errorNumber display dialog "脚本运行出错:" & errorMessage & "(错误码:" & errorNumber & ")" end try
把这个AppleScript添加到脚本菜单里,运行时如果有错误会直接弹出对话框显示,不用再去翻日志。
内容的提问来源于stack exchange,提问作者Evan
相关产品推荐
相关产品推荐

