我正在嘗試建立一個在 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