免交互概念:
不需要人为控制就可完成自动化操作
Here Document
使用i/o重定向的方式,将命令的列表提供给交互式的程序或者命令,是一种标准的输入,只能接收正确的指令或者命令
格式:命令 <<标记
内容/程序
标记
注意:1.标记可使用任意合法的字符(通常使用EOF作为标记)
2.结尾的标记要顶格写,前面不能有任何的字符
3.结尾的标记后面也不能有任何的字符,包括空格
4.如果开头的标记前有空格,空格会被自动省略
expect
概念:tcl语言基础之上的一种工具,自动化测试和控制,在脚本中解决交互的问题
执行方式:1.必须是赋权执行 2.只能用./执行
转义符:
\n:换行
\t:制表符,相当于tab
\r:回车
\b:退格符(表示删除键)
expect语法
spawn:后面通常跟一个linux的执行命令,表示开启一个会话启动一个进程,并且跟踪后续的交互信息
expect:捕获上一次执行的命令是否包含指定的字符串,如果有会立即返回,否则等待超时自动退出,默认超时时间10s
只能捕获由spawn启动的进程输出
设置超时时间的命令
send:向进程发送字符串,用于模拟用户的输入,该命令不能自动回车,一般后面加一个\n或者\r
格式:
1.
expect " " { send " " }
2.
expect " "
send " "
3.多分支
expect {
" " {send " " }
" " {send " " }
" " {send " " }
}
注:只要匹配其中一个情况,就会执行相应的send语句,然后退出
结束符
expect eof : 会切换到之前的终端
interact :留在当前终端不变
set :设置超时等待时间 不限制的时候-1
命令格式:set timeout 时间
exp_continue:可在expect判断之后继续匹配expect捕获的其他内容,类似于脚本的continue,表示允许继续向下执行指定
使用时,结束语句不能直接使用expect eof
send_user:回显信息,相当于echo,后跟上用户想要输出的内容
接收参数:类似于shell当中的位置变量 $n
set 自定义变量名 [lindex $argv 0 ]
set 自定义变量名 [lindex $argv 1 ]