AppleScript变量未定义错误排查及定时调音量需求咨询
解决crontab调用osascript调音量时变量未定义(-2753)的问题
问题说明
想用crontab实现Mac夜间自动调音量,运行osascript脚本时触发错误:The variable volArg is not defined. 错误编号-2753,试过global、property声明变量没用。
出错的原脚本
on run argv set volArg to item 1 of argv set volume output volume volArg end run
无参数简化脚本(可正常运行)
如果不需要动态传音量值,直接写死数值的脚本可以正常执行:
set volume output volume 20
crontab基础使用示例
比如每天22点自动把音量调到20,crontab里加这条:
0 22 * * * /usr/bin/osascript /Users/yourname/scripts/set-volume.scpt
修复后的传参脚本
问题根源是crontab环境下osascript的参数处理逻辑,修复后脚本如下:
on run argv if argv is not {} then set volArg to (item 1 of argv) as integer set volume output volume volArg end if end run
修复要点
- 加了参数非空判断,避免无参数调用时触发错误
- 把传递的参数显式转成
integer类型,因为crontab传的是字符串,直接用会类型不匹配 - 不需要额外的
global或property关键字,在runhandler里直接处理参数就行
crontab传参调用示例
如果要每天22点把音量调到15,crontab条目这么写:
0 22 * * * /usr/bin/osascript /Users/yourname/scripts/fixed-set-volume.scpt 15
内容的提问来源于stack exchange,提问作者user3192805
相关产品推荐
相关产品推荐

