免交互:
here document
- 重定向输入或输出,EOF(end of file)的缩写
- 语法:
批量注释 :
expect
Here Document免交互
概述:Here Document是一个特殊用途的代码块,在Linux Shell中使用重定向的方式将命令列表提供给交互式程序或命令,如ftp、read或cat命令。Here Document是标准输入的一种替代品,可以使脚本开发人员不必使用临时文件来构建输入信息,而是直接就地生产出一个文件并用作命令的标准输入。
格式如下:
使用过程中,需要注意以下几点:
- 标记可以使用任意合法的字符
- 结尾的标记一定要顶格写,前面不能有任何字符
- 结尾的标记后面也不能有任何字符(包括空格)
- 开头的标记前后空格会被省略掉
Here Document免交互
1、通过read命令接收输入并打印
2、通过passwd给用户设置密码
Here Document变量设定
Here Document多行注释
Bash的默认注释是“#”,该注释方法只适合单行注释,在shell编辑器中可以使用以下方法实现多行注释
通过使用冒号+标记的方式,将写入到该范围内的字符串或命令实现批量注释
expect免交互
概述:expect是建立在tcl语言基础上的一个工具,它可以让一些需要交互的任务自动化的完成,相当于模拟 了用户和命令行的交互操作。expect是用来进行自动化控制的测试工具。
expect命令主要用来判断上次输出结果里面是否包含指定的字符串,只能捕捉由spawn启动的进程的输出。expect接收命令执行后的输出,然后和期望字符串进行匹配,若匹配成功,则会使用send向进程发送字符串,用于模拟用户的输入
spawn后面通常跟一个命令,表示开启一个会话。启动进程,并跟踪后续交互信息。
结束符
- expect eof:等待执行结束,若没有这句,可能导致命令还没有执行,脚本就结束了
- interact:执行完成后保持交互状态,把控制权交给控制台,这时可以手动输入信息
注意interact和expect eof只能二选一
set
- expect默认的超时时间是10秒,通过set命令可以设置会话超时时间,
expect_continue,表示可以向下继续执行命令
expect_user,表示回显命令,相当于echo
expect的执行方式
- 直接执行
- 顾名思义,就是直接对命令进行输出执行,较为简单直接
- 嵌入执行
- 需要执行较为复杂的脚本程序时,需要调用expect脚本,这样使用起来不灵活,这时可以采用嵌入模式