第三种:循环多分支模式(注:exp_continue命令只能出现在expect命令的匹配语句中,执行到exp_continue命令时,脚本会跳出当前expect命令 , 并重新执行该expect命令,直到expect命令通过不包含exp_continue命令的匹配语句结束、或expect命令匹配超时结束 。)
①expect {
字符串1 { 命令; exp_continue }
字符串2 { 命令 }
}
解释:如果字符串1与交换进程接收到的信息匹配成功,执行执行包含在”{}”中的命令,并重新执行该expect命令;如果字符串1与交换进程接收到的信息匹配成功 , 执行执行包含在”{}”中的命令,并重新执行该expect命令...;如果字符串1与交换进程接收到的信息匹配失败、字符串2与交换进程接收到的信息匹配成功,执行包含在”{}”中的命令,并结束该expect命令;如果字符串1、字符串2皆与交换进程接收到的信息匹配失败,timeout秒后结束该expect命令 。(注:脚本执行到expect命令时,计时器就开始计时,并会在计时器超时前不断对交换进程接收到的信息进行扫描,尝试字符串与信息的匹配 。)
②expect {
字符串1 { 命令; exp_continue }
字符串2 { 命令 }
timeout { 命令 }
}
解释:如果字符串1与交换进程接收到的信息匹配成功,执行执行包含在”{}”中的命令,并重新执行该expect命令;如果字符串1与交换进程接收到的信息匹配成功,执行执行包含在”{}”中的命令,并重新执行该expect命令...;如果字符串1与交换进程接收到的信息匹配失败、字符串2与交换进程接收到的信息匹配成功,执行包含在”{}”中的命令,并结束该expect命令;如果字符串1、字符串2皆与交换进程接收到的信息匹配失败,timeout秒后执行包含在”{}”中的命令 , 之后结束该expect命令 。(注:脚本执行到expect命令时,计时器就开始计时,并会在计时器超时前不断对交换进程接收到的信息进行扫描,尝试字符串与信息的匹配 。)
8.timeout:timeout是expect中的一个关键字变量,用于控制expect命令的超时时间 。需要注意的是,这个超时时间针对于整个expect命令,而不是针对于expect命令中的某条匹配语句 。也就是说 , 只有expect命令中所有匹配语句都匹配失败后 , 才会开始计算超时时间 。timeout变量值缺省为10(秒),我们可以通过”set timeout=值”的方式为其重新赋值,作用范围:本次赋值到下一次赋值间的所有expect命令 。注:如果需要为timeout变量重新赋值,应在expect命令之外进行 。
9.expect eof:该命令的作用是结束spawn交互进程,将命令行切回至运行脚本的主机(即从远端服务器登出) 。
10.interact:缺省情况下,expect脚本执行完毕后会自动从远端服务器登出(即便没有显式地执行”expect eof”命令) 。使用interact命令后,expect脚本执行完毕会继续保持当前状态,并将控制权移交给用户 。
11.exit:结束该脚本 。
expect中的if语句:
if { 条件表达式 } {
命令
}
if { 条件表达式 } {
命令
} else {
命令
}
expect中的while语句:
while { 条件表达式 } {
命令
}
expect中的for语句:
for { set i 1 } { $i =10 } { incr i } {
命令
}
incr变量名 步长——变量自增
incr 变量名 -步长——变量自减
数学运算需使用let、expr等工具
linux oracle数据库导出exp命令遇到command not found错误,bin文件夹下存在exp文件检查你的PATH变量设置,exp命令在Oracle的安装目录中 , 默认的PATH变量中没有这个路径
linux系统中oracle数据库exp命令提示错误-bash: exp: command not foundoracle安装不全 , 这个命令在:/opt/oracle/product/10.2.0/db_1/bin目录下,确认一下exp文件是否存在 。
推荐阅读
- 精细动作游戏教案,精细动作游戏教案小班
- 蛋糕erp系统,蛋糕制作软件
- spa应用html5,spa应用场景
- 一号泉的视频直播,一号泉是哪里生产的
- c语言用函数实现矩阵转置 c语言矩阵的转置程序解题思路
- redis的负载策略算法,redis 操作
- python爬虫文件,python爬虫文件的库
- c语言如何中断函数调用 c语言中断函数的作用是什么
- 下载的烦恼,下载烦恼图片