2.15 交互输入自动化

《Linux Shell 脚本攻略(第 2 版)》读书笔记

通过脚本进行交互式输入自动化

#!/bin/bash
#文件名:interactive.sh
read -p "Enter number: " no
read -p "Enter name: " name
echo You have entered $no, $name

按照下面的方法向脚本自动发送输入:

$ echo -e "1\nhello\n" | bash interactive.sh
You have entered 1, hello
# 这里用`-e`来生成输入序列,`-e`表明`echo`会解释转义序列。

如果输入的内容比较多,那么可以用单独的输入文件结合重定向操作符来提供输入:

$ echo -e "1\nhello\n" > input.data
$ cat input.data | bash interactive.sh
You have entered 1, hello

用 expect 实现自动化

expect作用:等待特定的输入提示,通过检查输入提示来发送数据。

#!/usr/bin/expect
#文件名:automate_expect.sh
spawn ./interactive.sh    # 参数指定需要自动化哪个命令
expect "Enter number: "   # 参数提供需要等待的消息
send "3\n"                # 要发送的消息
expect "Enter name: "
send "hello\n"
expect eof                # 指明命令交互结束

注意

  1. 第一行内容,shebang 路径:#!/usr/bin/expect
  2. 执行这个脚本之前先要给两个脚本都赋予可执行权限:
$ chmod a+x automate_expect.sh interactive.sh
$ ./automate_expect.sh
spawn ./interactive.sh
Enter number: 3
Enter name: hello
You have entered 3, hello

你可能感兴趣的:(2.15 交互输入自动化)