1.在/bin/bash脚本内使用expect命令格式如下
代码语言:javascript复制示例:
#!/bin/bash
expect <<! #在bash脚本中嵌套 expect 命令以 <<! 开始
此处为expect命 #中间为需要执行的 expect 命令
! #在bash脚本中嵌套 expect 命令以 ! 结束
2.一个简单的脚本嵌套expect例子
代码语言:javascript复制#!/bin/bash
d1=$(date " %Y-%m-%d")
/bin/expect <<! #expect命令的执行路径
set timeout 30 #等待30秒
spawn bash -c "/bin/scp /home/postgres-backup/${d1}_* root@10.1.0.42:/home/ > /dev/zero"
⬆#此处为expect执行的命令
expect "password:" #监测spawn返回的信息里面是否包含'password:'
send "123456r" #如果上一条里面包含'password:'那么输入123456,r 是换行
#expect eof #执行完 spawn 命令后返回当前控制台。
#interact #执行完 spawn 命令后留在对方控制台,比如ssh情景,需要留在ssh的机器上面
! #expect命令执行完,以 ! 结束
3.注意事项
如果 expect 命令里面包含 通配符,例如上面的例子里面的 * ,这时需要在 spawn 后面加上 bash -c 参数即可,反之亦然。