2009-12-31 3 views
2

Я хочу очистить экран (на локальной машине) после выхода из моего (полу) интерактивного сценария ожидания. Могу ли я сделать это из сценария? Вот что я пробовал, что не удалось.(Tcl/Expect) очистить экран после выхода

#!/usr/bin/expect -f 
set env(TERM) vt100 
spawn ssh -Y [email protected] 
set user username 
set pass password 
#login sequence 
expect "password: " 
send "${pass}\r" 
sleep .5 
#some menu commands to enter ERP.... 
#... 
#... 
set CTRLZ \032 
set CTRLC \003 
set CTRLA \001 
#don't time out 
set timeout -1 
     interact { 
       -reset $CTRLZ {exec kill -STOP [pid]} 
       $CTRLA { 
         exp_send "menucmd...\ry\r" 
       } 
       $CTRLC { 

         #clear the host machine screen??? 
         exec clear 
         exit 
       } 
       ~~ 
     } 

На удаленной стороне я не в оболочке, а в программе ERP. Я мог бы выйти в оболочку, а затем сделать «ясность» на удаленном хосте, если это то, что необходимо, но я думаю, что приглашение удаленного хоста все равно будет отображаться на экране.

EDIT: изменена, чтобы попытаться ясно еще до «выхода» (суб-вопрос: «Exec ясно» выполняется на машине, выполняющей ожидать скрипт правильно?)

+0

Извините, если я нуб Tcl. Я читаю свой путь через «Изучение ожиданий» прямо сейчас и пробую вещи. – jjclarkson

ответ

4

После того, как вы [Выход], все остальное после не будет выполнен. Перед выходом необходимо выполнить [exec clear].

Если вы используете совместимый терминал VT100 (и большинство терминалов Unix являются), то вы можете попробовать непосредственно посылать команды vt100 к терминалу:

puts \033\[2J 
+0

Я переключил порядок этих двух линий на нет ... – jjclarkson

+0

На какой платформе вы работаете? – slebetman

+0

Локальная система (работает сценарий ожидания) - это ubuntu linux. Хост, с которым работает скрипт, запускает SCO Unix. – jjclarkson

Смежные вопросы