Script membuka dua terminal windows

2

Saya mengkodekan AppleScript kecil ini menggunakan Automator :

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

Ini berfungsi dengan baik tetapi memiliki efek samping: ketika saya menutup jendela, selalu ada jendela Terminal untuk ditutup, jadi ada dua jendela, yang menjalankan skrip dan Terminal.

Apakah ada cara untuk menjalankan hanya satu jendela?


sumber
1
Apa yang terjadi ketika Anda hanya membuat do script "myscript"?
Mateusz Szlosek
@Mateusz Szolsek: Saya mendapatkan kesalahan

Jawaban:

3

Mencoba:

tell application "Terminal"
    if not (exists window 1) then reopen
    activate
    do script "echo hi" in window 1
end tell
adayzdone
sumber
2

Sepertinya ketika Terminal tidak terbuka, maka tell application Terminalbuka Terminal dengan jendela pertama dan do scriptbuka jendela lain (karena do scriptseharusnya membuka jendela baru).

Solusi parsial adalah do script ... in window 1, yang memaksa untuk menjalankan skrip di jendela yang baru dibuka, tetapi ketika Terminal digunakan sebelumnya, ini akan membajak jendela yang ada (dan mungkin konteks yang tidak sesuai).

Script berikut membantu saya:

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 

(Saya mendapat inspirasi dari proposal adayzdone , tetapi itu tidak berhasil untuk saya (di El Capitan). Sepertinya setelah tell application "Terminal"kondisi not (exists window 1)tidak pernah berlaku.)

Aivar
sumber