모든 Mac 터미널 창을 닫고 스크립트를 실행 중인 창은 닫습니다.

모든 Mac 터미널 창을 닫고 스크립트를 실행 중인 창은 닫습니다.

4개의 터미널 창에서 Python 시뮬레이션 프로그래밍을 실행하는 쉘 스크립트를 만들려고 합니다. 4개의 개별 터미널 창(총 5개 창, Python 프로그램용 4개, 다른 터미널 창 제어용 1개)에서 프로그램을 4번 실행하는 스크립트가 있습니다. 이제 다른 4개 터미널 창의 프로그램을 닫고 종료하지만 컨트롤 터미널 창은 계속 열어 두는 컨트롤 터미널 창에서 실행할 수 있는 스크립트를 만들고 싶습니다.

내가 지금까지 가지고있는 것은 다음과 같습니다

#!/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'

문제는 마지막 줄이 스크립트가 실행되는 창을 포함하여 모든 창을 닫기 때문에 작동하지 않는다는 것입니다. 저는 쉘이나 애플 스크립트에 익숙하지 않으므로 어떤 도움이라도 환영합니다. Stack에 글을 올렸지만 자동화 유형의 질문에는 여기가 더 적합할 것 같습니다. 감사해요

답변1

"메인" 창의 ID를 변수에 할당한 다음 스크립트 끝에서 ID가 "메인" 창의 ID와 일치하지 않는 모든 창을 닫을 수 있습니다. 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'

답변2

스크립트를 실행하는 창이 맨 앞에 있고 터미널이 다른 창을 닫을 때 확인을 요청하지 않는 경우 다음과 같이 시도해 볼 수 있습니다.

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

관련 정보