Bash 使用变量定义脚本路径

Bash 使用变量定义脚本路径,bash,macos,osascript,Bash,Macos,Osascript,因此,我尝试从终端添加一个登录项,并使用以下行: osascript-e'告诉应用程序“系统事件”以属性{path:/Users/me/Desktop/main,hidden:true}作为登录项的结尾。 但问题是我希望main文件将其自身添加到登录项中,这意味着main的路径可能会更改,因此我希望路径是如下所示的变量: cd "$(dirname "$0")" STR="$(dirname "$0")" osasc

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

osascript-e'告诉应用程序“系统事件”以属性{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'告诉应用程序“系统事件”,使登录项在末尾具有属性{path:%s,hidden:true}'$STR“
# ...............................................................................................^^................^^^^^^
osascript-e“$body”