1

Я пытаюсь создать сценарий оболочки, который запускает программирование на Python в 4 терминальных окнах. У меня есть сценарий, который запускает программу четыре раза в четырех отдельных окон терминала (всего 5 окон, 4 для программ Python и одно для управления другими окнами терминала). Теперь я хочу создать сценарий, который я могу запустить в окне терминала управления, который закрывает и убивает программы других четырех окон терминала, но при этом все еще имеет открытый элемент управления.

То, что я до сих пор это что-то вроде этого

#!/bin/sh

osascript -e 'tell app "Terminal" 
do script "killall python"
end tell'
osascript -e 'tell app "Terminal" to quit'
osascript -e 'tell app "Terminal" to open'

Проблема в том, что последняя строка не работает, потому что она закрывает все окна, включая окно, в котором выполняется скрипт. Я не очень знаком со сценариями оболочки или Apple, поэтому любая помощь будет приветствоваться. Я написал в стеке, но я думаю, что это может быть лучшее место для вопроса типа автоматизации. Спасибо

2 ответа2

2

Вы можете назначить идентификатор "главного" окна переменной, а затем в конце скрипта закрыть все окна, чей идентификатор не совпадает с идентификатором главного окна. Часть AppleScript может быть такой:

tell application "Terminal"
    set mainID to id of front window
    -- insert your code
    close (every window whose id ≠ mainID)
end tell

РЕДАКТИРОВАТЬ

#!/bin/sh

killall python

osascript -e 'tell application "Terminal"' -e 'set mainID to id of front window' -e 'close (every window whose id ≠ mainID)' -e 'end tell'
1

Если окно, в котором запущен скрипт, находится на переднем крае, и терминал не запрашивает подтверждения при закрытии других окон, вы можете попробовать что-то вроде этого.

tell application "Terminal"
    close rest of (get windows)
end tell

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .