多行重定向
格式:
语法格式
命令<< 标记
...(输入内容)
标记
- 标记可以使用任意的合法字符(通用的字符是EOF)
- 结尾的标记一定要顶格写,前面不能有任何字符(包括空格)
- 结尾的标记后面也不能有任何字符(包括空格)
- 开头标记前后空格会被省略掉
- 单引号 变量双引号 —
expect
expect是建立在tcl之上的一个工具,用于进行自动化控制和测试,解决shell脚本中交互相关的问题
expect [选项] [ -c cmds ] [ [ -[f|b] ] cmdfile ] [ args ]
命令
命令 功能简介
spawn 启动一个新的进程
expect
send
send_user 向用户显示文本消息
interact 允许用户与当前spawn的进程进行交互。
sleep 暂停执行一定的时间
eof 等待到达文件结束,结束符
exit 退出当前的expect脚本
命令 | 功能简介 |
---|---|
spawn | 启动一个新的进程 |
expect | 等待输入中的特定模式或字符串 |
send | 发送文本到当前spawn的进程 |
send_user | 向用户显示文本消息 |
interact | 允许用户与当前spawn的进程进行交互 |
sleep | 暂停执行一定的时间 |
eof | 等待到达文件结束,结束符 |
exit | 退出当前的expect脚本 |
expect
判断上次输出结果中是否包含指定的字符串,如果有则立即返回,否则就等待超时时间后返回·
只能捕捉由spawn启动的进程的输出·
用于接收命令执行后的输出,然后和期望的字符串匹配
send
向进程发送字符串,用于模拟用户的输入;
该命令不能自动回车换行,需要配合\r使用,实现自动执行命令。
set
设置超时时间,过期则继续执行后续,指令单位是秒,默认为10秒。
otimeout-1
表示永不超时
send user
相当于echo
exp continue
允许expect继续向下执行指令
脚本解释器
表明使用哪一个shell.
#!/usr/bin/expect
结束符
expect eof
退出脚本
exit
免交互实现传输文件
#!/usr/bin/expect
spawn scp /etc/fstab 192.168.118.30:/mnt
expect {
"yes/no" { send "yes\n";exp_continue }
"password" { send "123123\n" }
}
expect eof
# \r也行