小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
expect命令行参数
-
[lindex $argv n]获得index为n的参数(index从0开始计算) -
$argc为命令行参数的个数 -
[lrange $argv 0 0]表示第一个参数 -
[lrange $argv 0 3]表示第1到第3个参数 -
if...elif...else...
expect支持 if 语句
if {条件1} {
条件1执行语句
} elif {条件2} {
条件2执行语句
} else {
其他情况执行语句
}
说明:
-
if的条件用{}来包含条件 -
if和后面的{}必须有空格隔开 -
两个花括号之间必须有空格隔开,比如
if {} {},否则会报错expect:extra characters after close-brace -
使用{来衔接下一行,所以if的条件后需要加左花括号{
-
else不能单独放一行,所以else要跟在}后面 -
expect的核心是spawn expect send set -
spawn:调用要执行的命令 -
expect:等待命令提示信息的出现,也就是捕捉用户输入的提示: -
send:发送需要交互的值,替代了用户手动输入内容
set 设置变量值
-
interact:执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。如果没有这一句登录完成后会退出,而不是留在远程终端上。 -
expect eof:这个一定要加,与spawn对应表示捕获终端输出信息终止,类似于if....endif -
expect: 脚本必须以interact或expect eof结束,执行自动化任务通常expect eof就够了。
设置 timeout
-
设置
expect永不超时set timeout -1 -
设置
expect 300秒超时,如果超过300没有expect内容出现,则推出set timeout 300