Estou tentando criar um script de shell que execute uma programação de simulação python em 4 janelas de terminal. Eu tenho o script que inicia o programa quatro vezes em quatro janelas de terminal separadas (total de 5 janelas, 4 para os programas python e uma para controlar as outras janelas do terminal). Quero agora criar um script que possa ser executado na janela do terminal de controle que feche e elimine os programas das outras quatro janelas do terminal, mas ainda mantenha a janela de controle aberta.
O que eu tenho até agora é algo assim
#!/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'
O problema é que a última linha não funciona porque fecha todas as janelas, incluindo aquela em que o script está sendo executado. Não estou muito familiarizado com shell ou script apple, então qualquer ajuda seria bem-vinda. Postei no Stack, mas acho que este pode ser um lugar melhor para uma pergunta do tipo automação. Obrigado
Responder1
Você pode atribuir o id da janela "Principal" a uma variável e ao final do script fechar todas as janelas cujo id não corresponda ao da janela "Principal". A parte AppleScript pode seguir estas linhas:
tell application "Terminal"
set mainID to id of front window
-- insert your code
close (every window whose id ≠ mainID)
end tell
EDITAR
#!/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'
Responder2
Se a janela que executa o script estiver na frente e o Terminal não solicitar confirmação ao fechar as outras janelas, você poderá tentar algo assim.
tell application "Terminal"
close rest of (get windows)
end tell