Ответом на вашу проблему является не использование do script
, а отправка нажатий клавиш в текущее окно терминала с помощью keystroke
или key code
.Вот скрипт, который я использую, чтобы сделать нечто подобное.Я просто вызываю это из терминала с помощью osascript myscript.scpt
или запускаю его напрямую (я использую LaunchBar для вызова applecripts), и он открывает новую вкладку терминала (если терминал уже открыт), дает ему произвольное имяи затем запускает любые команды, которые я кормлю.Вы можете изменить это, чтобы пропустить создание новой вкладки и просто запустить в текущем окне терминала.Я использую этот подход, только когда мне нужно сделать больше, чем просто запустить некоторые стандартные команды терминала (например, отправить ключи в интерактивную сессию Python), в противном случае я просто создаю сценарий bash.
global ENTER_, ESC_
set ENTER_ to 52
set ESC_ to 53
on run_commands(commands, pause)
tell application "System Events"
repeat with cmd in commands
keystroke cmd
key code ENTER_
delay pause
end repeat
end tell
end run_commands
on new_terminal_tab(tab_name)
activate application "Terminal"
delay 0.5
tell application "System Events"
# create new tab
keystroke "t" using {command down}
delay 0.5
# give it a name
keystroke "I" using {shift down, command down}
keystroke tab_name
delay 0.5
key code ESC_ # escape
end tell
end new_terminal_tab
new_terminal_tab("addon-sdk-work")
run_commands( { "cd /Users/username/Documents/dev/projname",¬
". env/bin/activate", ¬
"clear"}, 0.5)