我正在尝试创建一个 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