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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 反省三组学员【日精进打卡第67天】 【知~学习】 诵读《六项精进》大纲1遍 诵读《大学》1遍 阅读《活法》1篇 阅...
    周冲_22e8阅读 202评论 0 0
  • 今天是我开始在007的第一次写作,心里思前想后,不知道该写什么?怎么写?心急如焚,却无能为力。 一切都是自己过去种...
    涅槃重生_44d6阅读 153评论 0 0
  • 1.《论语》是孔子的弟子及再传弟子所编辑,以孔子年轻时说的话为主,并非孔子本人形成文字的学问也没有校对过。言论支离...
    中和lxy阅读 154评论 0 0