read命令是一个bash命令,它用于从键盘或标准输入中读取文本.我们可以使用read以交互的形式读取来自用户的输入.并且read还提供一种不需要按回车就能够输入参数的方法.
read可以从标准输入中读取单独的一行,或者使用-u选项,从文件描述符FD中读取.并且这单独的行被分隔成多个域,第一个词被赋值给第一个变量,第一个赋值给第二个变量,以此类推,直到剩下的所有词都赋值给最后一个变量.如果没有提供name变量,则读取的行被存放在REPLY变量中
用法: read [option]… [function]… [name]…
选项:
-a arrary 将字符赋值给ARRARY数组变量的序列下表成员,从零开始
-d delim 持续读取直到读入DELIM变量中的第一个字符,而不是换行符
-e 在一个交互式shell中使用readline获取行
-i text 使用TEXT文本作为readline的初始文字
-n nchars 读取语句中的n个字符并且存入变量中
-N nchars 在准确读取n个字符之后返回,除非遇到了文件结束符或者读超时,任何分隔符都被忽略
-p prompt 用于显示提示信息,并且末尾不带换行符
-r 不允许反斜杠转义任何字符
-s 不显示终端的任何输入
-t timeout 如果在timeout秒内没有读取一个完整的行则超时并且返回失败信息.TMOUT变量的值是默认的超时时间.timeout可以是小数.如果timeout是0,那么仅当在指定的文件描述符上输入有效的时候,read才会返回成功.如果超过了超时时间,则返回状态码大于128
-u fd 从文件描述符FD中读取,而不是标准输入
实战演练:
1、从下面的语句中读取n个字符并存入变量var中
read -n number_of_chars var
例如 read -n 2 var
echo $var
2、用无回显的方式读取密码
read -s var
3、显示提示信息
read -p “enter input:” var
4、在特定时限内读取输入,超时会返回
read -t timeout var
例如: read -t 2 var
5、用特殊的定界符作为输入行的结束
read -d “:” var
例如: read -d “:” var
原创文章,作者:black_fish,如若转载,请注明出处:http://www.178linux.com/33389