本文参考了 http://os.51cto.com/art/200912/167898.htm
有些命令例如ftp需要交互,有三种方法可以实现。
方法一(重定向)简单直观,也经常有实际应用,但是在自动交互领域功能有限。
#!/bin/bash ftp -i -n 1.2.3.4 << EOF user user1 pwd close bye EOF
方法二(echo管道)也很简单直观,有时甚至不用sleep配合就能展现强大的自动交互实力,但是在某些时候也束手无策。
#!/bin/bash (echo "curpassword" echo "newpassword" echo "newpassword")|passwd
方法三(expect)在功能上是最为强大的,expect本来就是为实现自动交互功能而生,但是缺点是需要安装expect包,在嵌入式等环境下难以安装。
#!/usr/bin/expect -f spawn su root expect "password: " send "123456\r" expect eof exit
三个方法各有优劣,应用的好,都可以完成Linux Shell自动交互。