Script apre due finestre di terminale

2

Ho codificato questo piccolo AppleScript usando Automator :

tell application "Terminal"
do script "myscript"
end tell

Questo funziona perfettamente ma ha un effetto collaterale: quando chiudo la finestra, c'è sempre la finestra del terminale da chiudere, quindi ci sono due finestre, quella che esegue lo script e il terminale.

C'è un modo per far funzionare solo una finestra?

    
posta Ian Bell 25.01.2016 - 20:13
fonte

2 risposte

3

Prova:

tell application "Terminal"
    if not (exists window 1) then reopen
    activate
    do script "echo hi" in window 1
end tell
    
risposta data 25.01.2016 - 21:36
fonte
1

Sembra che quando Terminal non è aperto, quindi tell application Terminal apre il Terminale con la prima finestra e do script apre un'altra finestra (perché do script dovrebbe aprire una nuova finestra).

La soluzione parziale è a do script ... in window 1 , che costringe a eseguire lo script nella finestra aperta di recente, ma quando Terminal era in uso in precedenza, questo avrebbe dirottato la finestra esistente (e probabilmente il contesto non adatto).

Il seguente script ha fatto il trucco per me:

if application "Terminal" is running then 
    tell application "Terminal"   
        # do script without "in window" will open a new window        
        do script "echo HELLO"             
        activate                          
    end tell                              
else                                      
    tell application "Terminal"   
        # window 1 is guaranteed to be recently opened window        
        do script "echo HELLO" in window 1 
        activate
    end tell
end if 

(Mi sono ispirato alla proposta di adayzdone , ma non ha funzionato per me (in El Capitan). Sembra che dopo tell application "Terminal" la condizione not (exists window 1) non tenga mai.)

    
risposta data 23.02.2017 - 17:28
fonte

Leggi altre domande sui tag