Estoy intentando crear un script de Shell que ejecute una programación de simulación de Python en 4 ventanas de terminal. Tengo el script que inicia el programa cuatro veces en cuatro ventanas de terminal separadas (un total de 5 ventanas, 4 para los programas de Python y una para controlar las otras ventanas de terminal). Ahora quiero crear un script que pueda ejecutar en la ventana del terminal de control que cierre y elimine los programas de las otras cuatro ventanas del terminal, pero aún tenga la de control abierta.
Lo que tengo hasta ahora es algo como esto.
#!/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'
El problema es que la última línea no funciona porque cierra todas las ventanas, incluida aquella en la que se ejecuta el script. No estoy muy familiarizado con los scripts de Shell o Apple, por lo que cualquier ayuda sería bienvenida. Publiqué en Stack, pero creo que este podría ser un mejor lugar para una pregunta de tipo automatización. Gracias
Respuesta1
Puede asignar la identificación de la ventana "Principal" a una variable y luego, al final del script, cerrar todas las ventanas cuya identificación no coincida con la de la ventana "Principal". La parte de AppleScript puede ser similar a esta:
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'
Respuesta2
Si la ventana que ejecuta el script está en primer plano y Terminal no solicita confirmación al cerrar las otras ventanas, puede intentar algo como esto.
tell application "Terminal"
close rest of (get windows)
end tell