关闭所有 Mac 终端窗口,但运行脚本的窗口除外

关闭所有 Mac 终端窗口,但运行脚本的窗口除外

我正在尝试创建一个 shell 脚本,该脚本在 4 个终端窗口中运行 Python 模拟编程。我有一个脚本,可以在四个单独的终端窗口中启动该程序四次(总共 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'

问题是最后一行不起作用,因为它关闭了所有窗口,包括脚本正在执行的窗口。我不太熟悉 shell 或 apple 脚本,所以任何帮助都欢迎。我发帖在 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

相关内容