shell中交互输入自动化
shell中有时我们需要交互,但是呢我们又不想每次从stdin输入,想让其自动化,这时我们就要使shell交互输入自动化了。这个功能很有用的哟。好好学习。
1    利用重定向
    重定向的方法应该是最简单的
例:
以下的test.sh是要求我们从stdin中分别输入no,name然后将输入的no,name打印出来
[root@localhost test]# cat test.sh
#! /bin/bash
read -p "enter number:" no
read -p "enter name:" name
echo you have entered $no, $name
 
以下是作为输入的文件内容:
[root@localhost test]# cat input.data 
1
lufubo
 
然后我们利用重定向来完成交互的自动化:
[root@localhost test]# ./test.sh < input.data 
you have entered 1, lufubo
 
 
2 利用管道完成交互的自动化
这个就是利用管道特点,让前个命令的输出作为后个命令的输入完成的
也用上面例子举例:
[root@localhost test]# echo -e "1\nlufbo\n" | ./test.sh 
you have entered 1, lufbo
上面中的 "1\nlufbo\n" 中的“\n”是换行符的意思,这个比较简单的。
 
3    利用expect
expect是专门用来交互自动化的工具,但它有可能不是随系统就安装好的,有时需要自己手工安装该命令
查看是否已经安装:rpm -qa | grep expect
以下脚本完成跟上述相同的功能
[root@localhost test]# cat expect_test.sh 
#! /usr/bin/expect
spawn ./test.sh
expect "enter number:"
send "1\n"
expect "enter name:"
send "lufubo\n"
expect off
 
注意:第一行是/usr/bin/expect,这个是选用解释器的意思,我们shell一般选的是 /bin/bash,这里不是
spawn: 指定需要将哪个命令自动化
expect:需要等待的消息
send:是要发送的命令
expect off:指明命令交互结束

shell中交互输入自动化的更多相关文章

  1. shell脚本之通过发送带\n字符串或expect脚本实现交互输入自动化

    编写shell脚本难免遇到需要交互式输入指令的步骤: 方法一: # cat action.sh #!/bin/sh read -p "enter number:" no; read ...

  2. 使用getopts处理shell中的输入参数

    在编写shell脚本中,经常要处理一些输入参数,在使用过程中发现getopts更加方便,能够很好的处理用户输入的参数和参数值.   getopts用于处理用户输入参数,举例说明使用方法: while ...

  3. shell 中命令输入的快!捷!键!

    非常棒!! 非常棒!! 删除ctrl + d 删除光标所在位置上的字符相当于VIM里x或者dlctrl + h 删除光标所在位置前的字符相当于VIM里hx或者dhctrl + k 删除光标后面所有字符 ...

  4. shell脚本中的交互式输入自动化

    shell中有时我们需要交互,但是呢我们又不想每次从stdin输入,想让其自动化,这时我们就要使shell交互输入自动化了. 1    利用重定向     重定向的方法应该是最简单的 例: 以下的te ...

  5. Linux在shell中输入历史命令

    在Linux的shell中,经常输入的命令有很多雷同,甚至是一样的, 如果是长命令,再次敲一遍效率真的是很低, 不过可以通过Ctl+r,  查找history中以前输入的命令,很是好用. 按Ctrl+ ...

  6. shell中使用>/dev/null 2>&1 丢弃信息

    在一些Shell脚本中,特别是Crontab的脚本中,经常会看到 >/dev/null 2>&1这样的写法. 其实这个很好理解.我们分两部分解释. 1.  >/dev/nul ...

  7. Shell脚本中判断输入参数个数的方法投稿:junjie 字体:[增加 减小] 类型:转载

    Shell脚本中判断输入参数个数的方法 投稿:junjie 字体:[增加 减小] 类型:转载   这篇文章主要介绍了Shell脚本中判断输入参数个数的方法,使用内置变量$#即可实现判断输入了多少个参数 ...

  8. 在shell中通过fifo与服务器交互

    首先,需要说的是:1.在shell中,运行的每一个命令至少启动一个新进程,且:$$:获取当前shell的进程号(PID)$! :执行上一个指令的PID2.重定向与管道有点类似,例子:cmd1 < ...

  9. shell编程中用户输入处理(shell 04)

    shell编程中用户输入处理1.命令行参数2.脚本运行时获取输入 命令行参数 通过空格来进行分割的位置参数 :$+position $0,$1,$2 ....$0 :程序名$1,$2,$3 ... $ ...

随机推荐

  1. linux svn服务器(一)

    先安装 参考文章http://www.cnblogs.com/zhaoyang-1989/articles/3455481.html

  2. GC之五--SystemGC完全解读

    目录: GC之一--GC 的算法分析.垃圾收集器.内存分配策略介绍 GC之二--GC日志分析(jdk1.8)整理中 GC之三--GC 触发Full GC执行的情况及应对策略 gc之四--Minor G ...

  3. sklearn的GridSearchCV例子

    class sklearn.model_selection.GridSearchCV(estimator, param_grid, scoring=None, fit_params=None, n_j ...

  4. javascript继承之原型式继承(四)

    javascript之父道格拉斯在2006年给出了这样一串代码,来实现继承. function object(o) { function F() { } F.prototype = o; return ...

  5. OPatch failed with error code 73(OracleHomeInventory gets null oracleHomeInfo)

    OPatch failed with error code 73(OracleHomeInventory gets null oracleHomeInfo) 1.问题描述 [oracle@dou_ra ...

  6. guess_age

    age_shanshan = 18count = 3num = 0while num < count: age = int(input("age:")) if age == ...

  7. CCKS 2018 | 最佳论文:南京大学提出DSKG,将多层RNN用于知识图谱补全

    作者:Lingbing Guo.Qingheng Zhang.Weiyi Ge.Wei Hu.Yuzhong Qu 2018 年 8 月 14-17 日,主题为「知识计算与语言理解」的 2018 全国 ...

  8. Mac上如何用命令修改文件内容

    首先打开iTerm,切到文件所在的文件夹目录下 cd xx 然后进入编辑模式 vim xx.xx 然后插入修改 shift + i 修改之后退出插入模式 esc 保存退出 shift + :  wq

  9. mysql 的安装,密码及修改 ,权限,基础语句(增删改查)

    参考网址:https://www.cnblogs.com/majj/p/9160383.html    (安装等) https://www.cnblogs.com/majj/p/9160421.htm ...

  10. [Python] Scipy and Numpy(1)

    import numpy as np #Create an array of 1*10^7 elements arr = np.arange(1e7) #Converting ndarray to l ...