關閉所有 Mac 終端機窗口,但執行腳本的視窗除外

關閉所有 Mac 終端機窗口,但執行腳本的視窗除外

我正在嘗試建立一個在 4 個終端視窗中執行 python 模擬編程的 shell 腳本。我有一個腳本,可以在四個單獨的終端窗口中啟動該程序四次(總共 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'

問題是最後一行不起作用,因為它關閉了所有窗口,包括正在執行腳本的窗口。我在 Stack 上發帖,但我認為這可能是解決自動化類型問題的更好地方。謝謝

答案1

您可以將「主」視窗的 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

相關內容