Here Document
免交互
标记可以使用任意的合法字符;
结尾的标记一定要顶格写,前面不能有任何字符;
结尾的标记后面也不能有任何字符(包括空格);
开头的标记前后的空格会被省略掉
Here Document
免交互
Here Document
可以实现免交互,通过
Here Document
可以 将一些简单的交互任务的交互过程去除掉,尤其是在编写脚本的过程中
1. 通过
read 命令接收输入并打印
通常使用
read
命令接收用户的输入值时会有交互过程,尤其是在脚本执行过程中遇到read 命令,脚本会停下来等待用户输入值后才会继续。
2. 通过 passwd 给用户设置密码
通过 passwd 命令给 jerry 用户设置密码,为避免重复交互,可使用 Here Document的方式
Here Document 变量设定
Here Document 也支持使用变量,如果标记之间有变量被使用,会先替换变量值。如 果想要将一些内容写入文件,除了常规的方法外,也可以使用 Here Document
Here Document
多行注释
Bash
的默认注释是
“#”
,该注释方法只支持单行注释,在
Shell
脚本的工作中,
“#”
右侧 的任何字符串,bash
都会将其忽略
expect
语法
单一分支语法
当监控命令的标准输出满足
expect
指定的字符串时, 向标准输入发送 send
指定的字符串
expect "password
:
" {send "mypassword\r“;}
多分支模式语法
多分支用于复杂的用户交互,一般情况下输出内容可能有多个,根据不同的输出内容, 分别向标准输入发送不同的内容
expect
{
"aaa" {send "AAA\r"}
"bbb" {send "BBB\r"}
"ccc" {send "CCC\r"}
}
除了上述的多分支结构之外,还有另外一种多分支结构
expect
{
"aaa" {send “AAA”;exp_continue}
"bbb" {send “BBB”;exp_continue }
"ccc" {send "CCC"}
}
expect
执行方式
直接执行
expect
命令可以实现自动登录远程服务器, 并进入交互模式
嵌入执行
编写
Shell
脚本的时候需
要去调用 expect 脚本,使用不灵活可以采用嵌入执行模式将 expect 过程 融入 Shell 当中,方便执行和处理