一、免交互
1.1 简单解释免交互
交互:在计算机中,交互一般指发出指令控制程序的运行,程序在接收到指令之后按照指令的效果做出对应的反应。
免交互:间接地通过第三方的方式把指令传送给程序,不用直接地下达指令。一般通过脚本。
Here Document 免交互
这是命令行格式,也可以写在脚本当中。通过I/O重定向的方式将命令的列表传送给交互式程序或命令。是标准输入的一种替代品,代替了人工的输入方式。语法格式如下图:
需要注意的事项:
- 标记可以是任意合法字符,一般不用特殊字符、不以数字开头,通常以
EOF
作为默认的标记位。 - 结尾的标记一定要顶格写,前面不能有任何字符,空格也不行。
- 结尾的标记,后面也不能有任何字符,包括空格。
- 开头的标记前后的空格都会被省略掉,不影响标记的内容。
上述都可以在命令行向test1.txt输入文本了,直到输入文本EOF作为结束标志。
tee
主要用于从标准输入读取数据,并将其写入到一个或多个文件,同时也可以将数据输出到标准输出(通常是终端)。
1.2 变量赋值
变量赋值
vim c1.sh
1.3 Expect实现免交互
用tcl语言写的一个工具,主要用到自动化控制和测试,解决shell脚本交互的问题。使用expect
需要先安装expect。转义符如下:
\n
:换行\r
:回车键\t
:横向制表符,相当于按TAB键\b
:退格,backspace
expect
免交互文件的解释器不是/bin/bash
,不能用sh
bash
来执行,要赋权后,用.
来执行,即需要先chmod 777 file
,然后再执行
set
:也可以用于设置变量
expect
:捕获的时候不一定要捕获全文,只要能捕获到内容即可
1.4 嵌入执行模式
在shell
当中加入expect
。涉及到环境的切换的场景不适合使用嵌套。如ssh
、su
等
练习:1、用expect
实现ssh
免交互登录root@20.0.0.20
2、一个脚本完成要求:免交互实现磁盘分区,分一个区即可,分完之后,第一步格式化,第二步实现挂载,手动挂载即可,然后在分区挂载点创建一个文件,写入内容"学习使我快乐!"并打印。