用变量定义osascript路径

问题描述

因此,我尝试从终端添加一个登录项,并且正在使用以下行:

osascript -e 'tell application "System Events" to make login item at end with properties {path:/Users/me/Desktop/main,hidden:true}'

但是事情是我希望main文件将自己添加登录项中,这意味着main的路径可能会更改,所以我希望该路径是这样的变量:

cd "$(dirname "$0")"
STR="$(dirname "$0")"
osascript -e 'tell application "System Events" to make login item at end with properties {path:$STR,hidden:true}'
sudo python3 main.py

但这给了我很多语法错误,还有另一种使用变量作为路径的方法吗?

谢谢

解决方法

由于applescript主体使用单引号引起来,因此该变量无法扩展。
另外,由于主体中有双引号,因此引号变得困难。

这将起作用:

printf -v body 'tell application "System Events" to make login item at end with properties {path:%s,hidden:true}' "$STR"
# ...............................................................................................^^................^^^^^^
osascript -e "$body"