注: 部分概念介绍来源于网络
简介: 接收键盘或其它文件描述符的输入。read 命令接收标准输入(键盘)的输入,或者其他文件描述符的输入。得到输入后,read 命令将数据放入一个标准变量中。
read 命令格式如下: #read [选项] [变量名]
选项: -a 后跟一个变量,该变量会被认为是个数组,然后给其赋值,默认是以空格为分割符。 -d 后面跟一个标志符,其实只有其后的第一个字符有用,作为结束的标志。 -p 后面跟提示信息,即在输入前打印提示信息。 -e 在输入的时候可以使用命令补全功能。 -n 后跟一个数字,定义输入文本的长度,字符数:read命令只接收指定的字符数就会执行;。 -r 屏蔽\,如果没有该选项,则\作为一个转义字符,有的话 \就是个正常的字符了。 -s 安静模式,在输入字符时不再屏幕上显示,例如login时输入密码,隐藏输入的数据。 -t 后面跟秒数,定义输入字符的等待时间。 -u 后面跟fd,从文件描述符中读入,该文件描述符可以是exec新开启的。 变量名可以自定义。如果不指定变量名,则会把输入保存到默认变量REPLY中; 如果只提供了一个变量名,则将整个输入行赋予该变量; 如果提供了一个以上的变量名,则输入行分为若干字,一个接一个地赋予各个变量,而命令行上的最后一个变量取得剩余的所有字;
read -t 30 -p "请输入姓名,等待30秒" name read -s -t 30 -p "请输入姓名,等待30秒,隐藏输入" name read -n 1 -t 30 -p "无需按回车,输入一个字符就会执行" gender read -e -p "输入文件名:" str? 输入文件名:a a.out ? ?a.py ? ? a.pyc ? ?abc.txt ? 使用 -e 参数时输入字符 a 后按下 Tab 键就会输出相关的文件名(该目录存在的)补全命令
读取文件 每次调用 read 命令都会读取文件中的 "一行" 文本。当文件没有可读的行时,read 命令将以非零状态退出。 通过什么样的方法将文件中的数据传给 read 呢?使用 cat 命令并通过管道将结果直接传送给包含 read 命令的 while 命令。 #!/bin/bash count=1 ? ?# 赋值语句,不加空格 cat test.txt | while read line ? ? ?# cat 命令的输出作为read命令的输入,read读到>的值放在line中 do ? ?echo "Line $count:$line" ? ?count=$[ $count + 1 ] ? ? ? ? ?# 注意中括号中的空格。 done echo "finish" exit 0 ?
|