代码之家  ›  专栏  ›  技术社区  ›  jjclarkson Andy Rose

(Tcl/Expect)退出后清除屏幕

  •  2
  • jjclarkson Andy Rose  · 技术社区  · 16 年前

    我想在退出(半)交互式expect脚本后清除屏幕(在本地计算机上)。我可以在脚本中这样做吗?我试过了,但失败了。

    #!/usr/bin/expect -f
    set env(TERM) vt100
    spawn ssh -Y username@domain
    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程序中。如果有必要,我可以退出shell,然后在远程主机上执行“清除”,但我认为远程主机提示符仍然会出现在屏幕上。

    1 回复  |  直到 16 年前
        1
  •  5
  •   slebetman    16 年前

    一旦你[退出],之后的一切都不会被执行。您应该在退出前执行[exec clear]。

    如果您使用的是vt100兼容终端(大多数Unix终端都是),则可以尝试直接向终端发送vt100命令:

    puts \033\[2J