2013-06-20 3 views
1

У меня есть сценарий, в котором есть два сценария Apple, которые открывают новую вкладку и выполняют команду. Я хочу, чтобы второй скрипт Apple подождал, пока действие командной строки первого яблочного скрипта не будет завершено. Я предпочел бы не просто спать надолго, пока не продолжится.Есть сценарий до завершения последнего скрипта

Есть ли способ, которым я могу это сделать?

Вот что у меня есть:

osascript -e 'tell application "Terminal" to activate' \ 
-e 'tell application "System Events" to tell process "Terminal" to keystroke "t" using command down' \ 
-e 'tell application "Terminal" to do script "cd '$current_dir'" in selected tab of the front window' \ 
-e 'tell application "Terminal" to do script "./my_script arg1" in selected tab of the front window' 

------ Wait until this process is finished ------- 

osascript -e 'tell application "Terminal" to activate' \ 
-e 'tell application "System Events" to tell process "Terminal" to keystroke "t" using command down' \ 
-e 'tell application "Terminal" to do script "cd '$current_dir'" in selected tab of the front window' \ 
-e 'tell application "Terminal" to do script "./my_script different_arg1" in selected tab of the front window' 

ответ

3

Вы можете проверить занятое свойство окна или вкладок:

tell application "Terminal" 
    set w to do script "sleep 1" 
    repeat 
     delay 0.1 
     if not busy of w then exit repeat 
    end repeat 
end tell 
osascript -e 'on run {a} 
    tell application "Terminal" 
     activate 
     tell application "System Events" to keystroke "t" using command down 
     do script "cd " & quoted form of a & "; sleep 1" in window 1 
     repeat 
      delay 0.1 
      if not busy of window 1 then exit repeat 
     end repeat 
     tell application "System Events" to keystroke "t" using command down 
     do script "cd " & quoted form of a & "; sleep 1" in window 1 
    end tell 
end run' /tmp 
+0

Это не работает на 'ssh' соединений – Mausy5043