Если бы я хотел запустить AppleScript из скрипта bash, я мог бы вызвать файл со списком команд, которые мне нужно выполнить.
#!/bin/bash
{some commands}
osascript file.scpt
{other commands}
Что, однако, если бы я хотел запускать команды, которые нужно было запускать последовательно изнутри bash?
Примером будет
#!/bin/bash
echo
echo This will open Google Chrome in Kiosk mode
osascript -e "tell application \"Google Chrome\""
osascript -e "activate"
osascript -e "tell application \"System Events\""
osascript -e "key down {command}"
osascript -e "key down {shift}"
osascript -e "keystroke \"f\""
osascript -e "key up {shift}"
osascript -e "key up {command}"
osascript -e "end tell"
echo "Google Chrome is now open in Kiosk Mode"
Я знаю, что это очень надуманный пример, но он помогает объяснить, что я пытаюсь сделать. Обычно все эти команды пишутся без соответствующих им управляющих \
символов повсюду и меньше "
вокруг каждой команды. Я также хотел бы иметь их в .scpt
файле.
Решение, которое я знаю, состоит в том, чтобы переписать скрипт, используя #!/usr/bin/osascript
вместо bash, и перейти оттуда, но я хочу иметь возможность смешивать. Я обнаружил, что могу проверить файл сценария, если он существует, чтобы создать его и добавить каждую нужную мне команду к этому файлу, а затем выполнить требуемый файл сценария изнутри bash, но это также противоречит цели.
В середине файла нет пути, я могу поменять оболочку, используемую со shebang
строкой, а затем вернуться обратно после того, как я выполнил необходимые команды, не так ли?
Любое понимание будет более чем приветствоваться.
источник
end tell
сценарий.-e
пример HEREDOC?-e statement Enter one line of a script. If -e is given, osascript will not look for a filename in the argument list. Multiple -e options may be given to build up a multi-line script. Because most scripts use characters that are special to many shell programs (for example, AppleScript uses single and double quote marks, ``('', ``)'', and ``*''), the statement will have to be correctly quoted and escaped to get it past the shell intact.
-e statement Enter one line of a script
есть это-e
присутствует. Но кроме этого, рассматривается ли HEREDOC, как если бы это была одна строка?Вы можете обернуть необработанный AppleScript в
<<EOD
... ПоследнийEOD
сигнал о конце ввода должен находиться на первой позиции в строке.(Кстати, ваш яблочный скрипт, похоже, пропустил
end tell
послеactivate
....)источник