一、概述在Linux环境,有多种实现自动化的脚本语言,如Shell、Python、Perl、Tcl等。Shell语言因与Shell外壳结合紧密,是最常见的实现自动化的脚本语言。同时,在Linux环境中存在大量功能单一的小工具——通常它们在指定输入后,立即就可获得输出,例如echo、cat等字符串/文本打印工具,又或者是如sed、awk等最常用的字符串编辑工具。通过编写Shell脚本,我们可以反复利用这些小工具来实现一些自动化的批处理。在少数情况下,我们也需要用到一些交互式的工具,例如passwd、fdisk等——这意味着在自动化执行的过程中,我们必须停顿下来,满足工具本身的交互式流程。本文将介绍两种在使用交互式命令时规避交互来实现自动化的方式。 二、用分界符控制交互式命令Shell中的 ‘<<’符号表示一种特殊的重定向,用于向某一个命令传递多行输入。当脚本中出现此符号时,Shell将首先会把紧跟着‘<<’的一个字符串,视为一种特殊的分界符;然后,用户可以输入一连串的数据;最后,用户单独起一行,用另一个相同的分界符结尾。在两个分界符之间的内容,都被视为命令的输入参数。我们在实际的软件开发项目中看到最多的就是用cat向一个文件输入一段文本。例如下面的example1.sh脚本中的内容:cat > example1.sql <<" {send "echo’HelloWorld!’\r"} expect "*>" {send"exit\r"} expect eof示例中,我们通过ssh以用户zhou登录了10.10.10.10,然后向ssh输入该用户的密码。登录成功之后,我们打印“Hello World!”,之后退出ssh,结束expect命令的执行。expect命令的更详细用法请参考man手册。 四、总结本文简单地介绍了在Linux下,两种使用交互式命令时规避交互来实现自动化的方式,供相关的开发人员参考。 -----------------本人微信公众号:zhouzxi,请扫描以下二维码: