Определение пути osascript с помощью переменной

#bash #macos #osascript

#bash #macos #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
  

Но это дает мне кучу синтаксических ошибок, есть ли другой способ использовать переменную для пути?

Спасибо

Комментарии:

1. github.com/koalaman/shellcheck/wiki/SC2016

Ответ №1:

Поскольку тело applescript заключено в одинарные кавычки, переменная не может расширяться.
Кроме того, поскольку в теле есть двойные кавычки, цитирование становится затруднительным.

Это будет работать:

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