shell 脚本自动化

在日常编写shell脚本时,我们通过需要读取交互输入的数据来控制程序运行。但是当用户输入的这些数据是固定的时候我们可以使这种半自动交互执行方式变成自动执行。

        首先写一个交互式输入的脚本:

        #!/bin/bash/

        # filename:interactive.sh

        read -p "Enter your name :"  Name;

        read -p "Enter your age: " Age

        read -p "Enter your fav: " Fav

        echo You hava entered $Name , $Age, $Fav


        可以按照以下方式命令自动发送输入:

        $ echo -e "Jim\n18\nfootball\n"  |  ./interactive.sh

        $ You hava entered Jim , 18, football

        就这样输入生效了,如果执行 ./interactive.sh 就要分三步输入Jim , 18, football


        使用echo -e 可以生成输入序列,如果输入的内容比较多,那么可以通过先输入文件再用重定向的方式提供输入,如下:

        $ echo -e "Jim\n18\nfootball\n" > input.data

        $ cat input.data

        $ Jim

        $ 18

        $ football

        然后通过文件来进行输入重定向

        $ ./interactive.sh < input.data

        $ You hava entered Jim , 18, football

        主要直接通过文件导入交互式输入数据, 有时也可以通过这种方式来输入键盘无法输入的有些键值


        有时候手动配置的input.data 交互数据的输入文件可能就会包含一些多余的字符,例如 \r ,这个时候我们就要先格式化一下

        $ echo -e "Jim\n18\nfootball\n" > tmp

        $ tr -d "\r" < tmp > input.data

        $ ./interactive.sh < input.data

        主要就可以保证输入数据正确性。


        另外一种方式是通过配置文件生成交互输入文件

        grep -v '^#'  $INIFILE | awk -F '=' '{if($1 ~ /^USB_BIN_/) print $2}' > tmp.ini    // 将配置文件中的配置项生成输入数据,前缀可以自行定义,通过awk的第一个域来来过滤

        tr  -d "\r" < tmp.ini > input.data         // 去掉输入文件中多余的字符 '\r' 

        ./interactive.sh < input.data

         

        还有一种方式是使用expect来完成这种交互式输入。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值