第二十九天:read

做用
从标准输入中读取一行。

语法
read [ -p ][  -r ][ -s ][ -u[ n ] ] [  VariableName?Prompt ][ VariableName ... ]

描述
read 命令从标准输入中读取一行,并把输入行的每一个字段的值指定给 shell 变量,用 IFS(内部字段分隔符)变量中的字符做为分隔符。VariableName 参数指定 shell 变量的名称,shell 变量获取输入行一个字段的值。由VariableName 参数指定的第一个 shell 变量指定给每个字段的值,由 VariableName 参数指定的第二个 shell 变量指定给第二个字段的值,以此类推,直到最后一个字段。若是标准输入行的字段比相应的由 VariableName 参数指定的 shell 变量的个数多,把所有余下的字段的值赋给指定的最后的 shell 变量。若是比 shell 变量的个数少,则剩余的 shell 变量被设置为空字符串。
注意: 若是省略了 VariableName 参数,变量 REPLY 用做缺省变量名。
由 read 命令设置的 shell 变量影响当前 shell 执行环境。

标志
-p 用 |& (管道,& 的记号名称)读取由 Korn shell 运行的进程的输出做为输入。
注:-p 标志的文件结束符引发该进程的清除,所以产生另一个进程。
-r 指定读取命令把一个 \ (反斜杠) 处理为输入行的一部分,而不把它做为一个控制字符。
-s 把输入做为一个命令保存在 Korn shell 的历史记录文件中。
-u [ n ] 读取一位数的文件描述符号码 n 做为输入。文件描述符能够用 ksh exec 内置命令打开。n 的缺省值是 0,表示的是键盘。值 2 表示标准错误。

参数
VariableName?Prompt 指定一个变量的名称和一个要使用的提示符。当 Korn shell 是交互式时,它将把提示符写到标准错误,并执行输入。Prompt 包含多于一个的字,必须用单引号或双引号括起来。
VariableName... 指定一个或多个由空格分隔的变量名。

退出状态
这个命令返回下列出口值:
0 成功完成。
>0 检测到文件结束符或一个错误发生。

一、基本读取
read命令接收标准输入(键盘)的输入,或其余文件描述符的输入(后面在说)。获得输入后,read命令将数据放入一个标准变量中。
read name
因为read命令提供了-p参数,容许在read命令行中直接指定一个提示。
read -p "Enter your name:" name
二、计时输入.
 -t选项指定read命令等待输入的秒数。当计时满时,read命令返回一个非零退出状态;
read -t 5 -p "please enter your name:" name
除了输入时间计时,还能够设置read命令计数输入的字符。当输入的字符数目达到预约数目时,自动退出,并将输入的数据赋值给变量。
- read -n1 -p "Do you want to continue [Y/N]?" answer
该例子使用了-n选项,后接数值1,指示read命令只要接受到一个字符就退出。只要按下一个字符进行回答,read命令当即
接受输入并将其传给变量。无需按回车键
三、默读(输入不显示在监视器上)
-s选项可以使read命令中输入的数据不显示在监视器上(实际上,数据是显示的,只是 read命令将文本颜色设置成与背景相同的颜色)。
read  -s  -p "Enter your password:" pass
四、读文件
使用read命令读取Linux系统上的文件
每次调用read命令都会读取文件中的"一行"文本。当文件没有可读的行时,read命令将以非零状态退出。
最经常使用的方法是对文件使用cat命令并经过管道将结果直接传送给包含read命令的 while命令
- #!/bin/bash
- count=1    //赋值语句,不加空格
- cat test | while read line        //cat 命令的输出做为read命令的输入,read读到的值放在line中
- do
-    echo "Line $count:$line"
-    count=$[ $count + 1 ]          //注意中括号中的空格。
- done
- echo "finish"
- exit 0
相关文章
相关标签/搜索