如何对文本内容进行面交互
here document 免交户
对文本内容进行操作:
标准输入的替代品
语法格式 命令 << 标记
内容
标记结尾
命令:linux的命令
注意事项:
1标记可以使用任意合法字符。(字母和数字,一般不使用特殊符号,以字母开头 EOF)
2结尾的标记要顶格写,而且结尾的标记前不能有任何字符(空格也不能有)
3开头的标记可以加空格,但是会被自动省略(开头标记前,一般也没有空格)
read 的方式赋值 给 i i的值为test
免交互给文本输入内容 (会覆盖)不覆盖要>>
tee 本身就具有标准输出的作用,可以直接把内容输入到文件当中。会自己创建文件夹
整体赋值给变量
会输入自己定义的值和var 的值
给eof加个’’var的值就传不进来了,就只输出var这个字符
加-‘’会消除每行之前的tab键
expect 免交互
要声明使用
自动化控制和测试,解决shell脚本中交互的问题
expect建立在tcl语言基础上的工具。
执行方式:sh bash
必须赋权执行
.sh 结尾
./ 执行
常用的转义字符
\n 相当于换行,打了一个回车键
\t 制表符,相当于tab键
\r 就是回车
\b 退格符
spawn
申明命令
spawn后面一般都是linux的命令,表示开启会话,或者进程,跟踪后续的交互信息
expect
捕获 命令的相关内容,字符串匹配
捕获的内容,是为了后续模拟用户需要输入的内容
send 发送 一般和expect一起使用
发送指令,模拟用户的输入
方法一:
expect “密码” {send “123456\r” }
写在一行,必须要花括号括起来
方法二
expect”密码”
send “123456\r”
换行写不需要花括号
方法三
多分支匹配 { 要在expect后面不能换行另写
结束符:
expect eof
表示交互结束,等待执行结束,退回到原来的用户
expect 默认等待时间10秒
interact
执行完成之后保持状态,把控制权交给控制台,然后停留在目标终端,不会退回源终端
注意点:两个结束符二选一
set
定义变量,设置参数
set timeout 5 等待时间默认10秒变成5秒
格式:
exp_continue
和expect捕获命令结合起来一起使用,附加在expect判断项之后,匹配到expect的捕获内容之后,还能够继续判断expect捕获语句当中的其他选项
格式:
send_user
回显命令,和echo一样,打印内容
免交互创建用户:
嵌入执行,将expect免交互的过程和shell结合起来
ssh su 会涉及到终端切换,不建议使用嵌入式执行
远程登录免交互:
传参的方式免交互执行,自定义用户密码,来远程连接
打印结果后面要加\n 不然不能识别