登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

baikgd的博客

技术是工具,生活是目的,更好的生活是目标!

 
 
 

日志

 
 

read 命令用法详解(转载)  

2011-09-01 16:58:51|  分类: linux |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

1. 简介

  read是一个buildin命令,主要完成对参数的赋值,类似C语言中的scanf。其不仅可以赋值变量,还可以赋值数组;其输入不仅是屏幕,还可以是文件描述符。

2. man中选项说明

              -a aname

                     The words are assigned to sequential indices  of  the  array  variable

                     aname,  starting  at  0.   aname  is  unset  before any new values are

                     assigned.  Other name arguments are ignored.

              -d delim

                     The first character of delim is used  to  terminate  the  input  line,

                     rather than newline.

              -e     If  the  standard input is coming from a terminal, readline (see READ-

                     LINE above) is used to obtain the line.

              -n nchars

                     read returns after reading nchars characters rather than waiting for a

                     complete line of input.

              -p prompt

                     Display  prompt  on standard error, without a trailing newline, before

                     attempting to read any input.  The prompt is displayed only  if  input

                     is coming from a terminal.

              -r     Backslash  does not act as an escape character.  The backslash is con-

                     sidered to be part of the line.  In  particular,  a  backslash-newline

                     pair may not be used as a line continuation.

              -s     Silent  mode.   If input is coming from a terminal, characters are not

                     echoed.

              -t timeout

                     Cause read to time out and return failure if a complete line of  input

                     is not read within timeout seconds.  This option has no effect if read

                     is not reading input from the terminal or a pipe.

              -u fd  Read input from file descriptor fd.

-a 后跟一个变量,该变量会被认为是个数组,然后给其赋值,默认是以空格为分割符。

-d 后面跟一个标志符,其实只有其后的第一个字符有用,作为结束的标志,会举例说  明。

-p 后面跟提示信息,即在输入前打印提示信息。

-e 在输入的时候可以时候命令补全功能。

-n 后跟一个数字,定义输入文本的长度,很实用。

-r 屏蔽\,如果没有该选项,则\作为一个转义字符,有的话 \就是个正常的字符了。

-s 安静模式,在输入字符时不再屏幕上显示,例如login时输入密码。

-t 后面跟秒数,定义输入字符的等待时间。

-u 后面跟fd,从文件描述符中读入,该文件描述符可以是exec新开启的。

3. 举例

 -a举例:

root@localhost:~/test#read -a tao

qq ww ee rr

root@localhost:~/test#echo ${tao[1]}

Ww

-b举例

root@localhost:~/test#read -d eof -a tao

ww

dd

gg

hh  (输入一个e

root@localhost:~/test#echo ${tao[3]}

Hh

-n举例:

root@localhost:~/test#read -n3 -p "you can input 3 word:"

you can input 3 word:xxx

(输入3个字符后自动退出!)

-s举例

root@localhost:~/test#read -p password: -s passwd 

password:

(这时候输入就不再显示在屏幕上了!)

-e举例:

root@localhost:~/test#read -e file

tab键补全)

exp1               file               ngis_post.sh       text               

exp5               linux-2.6.27.54/   test               xen-3.0.1-install/ 

-u举例:

root@localhost:~/test#exec 3<file

root@localhost:~/test#read -u 3 tao

root@localhost:~/test#echo $tao

hello world!

root@localhost:~/test#

注意看下读入的次序:

root@localhost:~/test#cat file

hello world!

i am good

root@localhost:~/test#exec 3<file

root@localhost:~/test#read -u 3 tao

root@localhost:~/test#echo $tao

hello world!

root@localhost:~/test#read -u 3 tao

root@localhost:~/test#echo $tao

i am good

root@localhost:~/test#

这个选项很有用的,特别是自循环读入的时候。

  评论这张
 
阅读(1027)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018