第4章 处理用户输入与显示数据------------(从键盘输入的命令read,对输入计时计数)
来源:互联网 发布:淘宝如何进入卖家中心 编辑:程序博客网 时间:2024/05/29 18:19
4.3 获取用户输入
虽然提供命令行选项和参数是从脚本用户处获取数据的好方法,但有时脚本需要具有更高的交互性。有时在脚本执行过程中需要询问一个问题并等待执行脚本的人员的应答。bash shell提供的read命令可以解决这个问题。
4.3.1 基本读取
read命令接受标准输入(键盘)的输入,或其他文件描述符的输入。得到输入后,read命令将数据放入一个标准变量中。echo -n这个命令是抑制字符串结尾的新行符,允许脚本用户在字符串后面立即输入输入数据,而不是在下一行中输入,这使得脚本看起来更整齐。
事实上,在命令选项-p选项,允许在read命令行中直接指定一个提示。read命令将提示后面输入的所有数据赋值给单个变量,或者指定多个变量。输入的每个数据值都被赋值给列表中的下一个变量。如果变量列表中变量数据少于数据数目,则剩余的数据都赋值给最后一个变量。在read命令行中也可以不指定变量,那么read命令会将接收到的数据放置在环境变量REPLY中。环境变量REPLY中包含输入的所有数据,可以像其他变量一样在shell脚本中使用环境变量REPLY。
#!/bin/bash#read命令使用,用echo -n打印输入字符#echo -e使\n具有换行功能echo -n "输出你的名字:"read wordecho -e "你好,$word,欢迎来喜马拉雅FM!\n"#read -p允许在read命令行中直接指定一个提示read -p "从键盘键入的词:" first secondecho -e "输出从键盘键入的词:$first,$second...\n"#read命令行不指定变量,将收到的数据放置在环境变量REPLY中read -p "进行阶乘的数字:"factorial=1for(( count=1;count<=$REPLY;count++ ))do factorial=$[ $factorial*$count ]doneecho -e "对$REPLY进行阶乘的结果:$factorial\n"
4.3.2 计时
使用read命令存在着潜在危险。脚本很可能会停下来一直等带脚本用户输入数据。如果无论是否输入数据脚本都必须继续执行,那么可以使用-t选项指定一个计时器。-t选项指定read命令等待输入的秒数。当计时器计时数满时,read命令返回一个非零退出状态。
因为如果计时器计时数满,read命令会以非零状态退出,所以很容易使用标准的结构语句进行跟踪,如if-then语句或while循环。当计数器满时,if语句失败,shell会执行else部分的命令。
除了输入时间计时,还可以设置read命令计数输入的字符。当输入的字符数目达到预定项目时,自动退出,并将输入的数据赋值给变量。使用“-n数字”这个命令,当输入的字符超过“数字”,read命令立即接受输入并将其传给变量。无需按回车。
#!/bin/bash#read -t -p选项对输入进行计时if read -t 10 -p "在10秒内输入用户名:" usernamethen echo -e "你好,$username,欢迎来到喜马拉雅FM!\n"else echo -e "输入超时,请在10秒内输入完成...\n"fi#read -n num -p选项对输入字符进行计数echo -e "Do you want to continue?(Y/N)\n"read -n 1 answercase $answer inY | y) echo -e "\nFine,continue to input...\n";;N | n) echo -e "\nOK,good bye!\n";;*) echo -e "\nInput the $answer illegal characters!\n";;esac
- 第4章 处理用户输入与显示数据------------(从键盘输入的命令read,对输入计时计数)
- 第4章 处理用户输入与显示数据------------(参数计数、获取所有数据)
- 第4章 处理用户输入与显示数据------------(更高级的getopts命令、标准化选项)
- 第4章 处理用户输入与显示数据------------(getopt命令)
- 第4章 处理用户输入与显示数据------------(默读与文件读取)
- 第4章 处理用户输入与显示数据------------(读取参数、读取程序名称、测试参数)
- 第4章 处理用户输入与显示数据------------(移位shift、命令行参数选项)
- 第4章 处理用户输入与显示数据------------(禁止命令输出、lsof命令、关闭文件描述符、创建读取/写入文件描述符)
- 第4章 处理用户输入与显示数据------------(创建本地临时文件、在/temp中创建临时文件、创建临时目录、tee命令)
- 第4章 处理用户输入与显示数据------------(标准文件描述符、STDIN/STDERR/STDOUT、临时重定向、永久重定向exec)
- php对用户输入数据的转义处理
- 显示InputDialog输入对话框实现对用户输入的英文单词进行简单处理
- 读取用户输入的内容(read命令的使用)
- Shell while read命令完成用户的交互输入
- 第14章 处理用户输入
- shell read处理用户输入示例讲解
- 第8章任务1:从键盘输入数据并显示
- java:对输入数据的异常处理
- 深入理解JavaScript系列(4):立即调用的函数表达式
- Unity开发Android游戏(二)Hello world!
- android 设计模式: 策nue模式
- css3动画之上下抖动
- cocos2d - JS 修改 index.html 的 title
- 第4章 处理用户输入与显示数据------------(从键盘输入的命令read,对输入计时计数)
- android-async-http ,volley ,okhttp分析
- 第二节 telnet模拟get和post方法
- 安卓 数据库的使用
- EditText 显示隐藏软键盘
- [Leetcode] 5. Longest Palindromic Substring 解题报告
- solr定时任务dataimport报错解决
- C++ int与string的转化
- Python爬虫1-Scrapy环境的安装