如何将sleep命令放入tcl脚本中?

如何将sleep命令放入tcl脚本中?,tcl,sleep,expect,Tcl,Sleep,Expect,我试图在tcl脚本中放置一个sleep命令,以便在发送disconnect命令之前等待10秒: #!/usr/bin/expect -f set n 0 if { $argc != 1 } { puts "The script requires the number of bot." puts "Please try again." exit 1 } else { set n [lindex $argv 0]

我试图在tcl脚本中放置一个sleep命令,以便在发送disconnect命令之前等待10秒:

#!/usr/bin/expect -f

set n 0

if { $argc != 1 } {
        puts "The script requires the number of bot."
        puts "Please try again."
        exit 1
    } else {
        set n [lindex $argv 0]
        }

# Spawn Python and await prompt
spawn mono --debug pCampBot.exe -loginuri http://127.0.0.1:9000 -s home -n $n -firstname test -lastname bot_ -password 123 -b p
expect "pCampbot#"

# Send Python statement and await prompt
send "conn\n"
expect "pCampbot#"

sleep 10

send "disconn\n"
expect "pCampbot#"

# Pass control to user so he can interact with Python
interact
问题是,sleep命令就像是在spawn命令之后执行的,也就是说,它等待10秒,然后依次发送“conn”和“discon”命令


我不知道它为什么会这样,我也不知道如何解决这个问题。

Tcl使用
after
命令来解决这个问题,前提是你给它一个整数毫秒的参数。要睡眠10秒钟,请执行以下操作:

after 10000

Tcl使用
after
命令进行此操作,前提是您为其提供一个整数毫秒数的参数。要睡眠10秒钟,请执行以下操作:

after 10000

传递多个参数会做一些不同的事情,为以后的执行安排一个命令。感谢您的提示,我尝试使用“after”命令而不是“sleep”,但我发现的行为是相同的。将下一个“send”命令作为“after”参数,如下所示:在10000之后{send“\ndisconn\n”在10000之后{send“quit\n”}它似乎工作得很好。我必须在“discon\n”之前输入一个额外的转义字符,因为我不知道原因,但脚本将其放在shell命令行“020;17R”中,因此我必须首先发送此符号,然后发送“discon”命令。传递多个参数会做一些不同的事情,安排命令稍后执行。感谢您的提示,我试着用“after”命令代替“sleep”,但我发现的行为是一样的。将下一个“send”命令作为“after”参数,如下所示:在10000之后{send“\ndisconn\n”在10000之后{send“quit\n”}它似乎工作得很好。我必须在“discon\n”之前输入一个额外的转义字符,因为我不知道原因,但脚本将其放在shell命令行“020;17R”中,因此我必须首先发送此符号,然后发送“discon”命令。