/usr/bin/read [-r] var...
read name...
set variable= $<
read [-prsu [n]] [name ? prompt] [name]...
read [-ACprs] [-d delim] [-n nsize] [-N nsize] [-t timeout] [-u unit] [vname?prompt] [vname... ]
read 实用程序会从标准输入读取一行内容。
缺省情况下,除非指定了 –r 选项,否则反斜杠 (\) 会起着转义符的作用。如果标准输入为终端设备,且调用 shell 为交互式 shell,则 read 会在以下情况下提示续行符:
shell 读取以反斜杠结尾的输入行,除非指定了 –r 选项。
输入 NEWLINE 字符后 here-document 未终止。
行会像 shell 中那样分成多个字段。第一个字段分配给第一个变量 var,第二个字段分配给第二个变量 var,以此类推。如果指定的 var 操作数少于字段数,则剩余的字段及其中间的分隔符会分配给最后一个 var。如果字段数少于 var 数,则剩余的 var 会设为空字符串。
var 操作数指定的变量设置会影响当前的 shell 执行环境。如果它是在一个子 shell 或单独的实用程序执行环境中调用的,例如下面所示的环境之一:
(read foo) nohup read ... find . -exec read ... \;
则它不会影响调用者的环境中的 shell 变量。
标准输入必须为一个文本文件。
从标准输入读取一行内容,并使用内部字段分隔符 IFS(通常为空格或制表符)来界定词边界,且第一个词会分配给第一个 name,第二个词会分配给第二个 name,以此类推,而剩余的词会分配给最后一个 name。可使用 \newline 续行。NEWLINE 以外的字符可通过在前面加上反斜杠来引用。在将单词分配给 names 之前,这些反斜杠会被删除,而且系统不会解释反斜杠之后的字符。返回代码是0,除非遇到文件结尾。
表示法:
set variable = $<
从标准输入加载一行内容作为 variable 的值。(请参见 csh(1)。)
shell 输入机制。读取一行,并将 IFS 中的字符用作分隔符,进而将该行分为多个字段。转义符 (\) 用于去除下一个字符和续行符的任何特殊含义。在原始模式下,–r、, 和 \ 字符不会受到特殊处理。第一个字段分配给第一个 name,第二个字段分配给第二个 name,以此类推,而剩余的字段会分配给最后一个 name。通过 –p 选项,使用 |& 从 shell 产生的进程输入管道中获取输入行。如果存在 –s 标志,则会将输入作为命令保存在历史记录文件中。标志 –u 可用于指定从中读取的一位文件描述符单元 n。文件描述符可以通过 exec 特殊命令打开。n 的缺省值为 0。如果省略 name,则 REPLY 会用作缺省 name。退出状态为0 除非无法打开输入文件进行读取,或者遇到了文件结尾。具有 –p 选项的文件结尾可清除该进程,这样可以生成其他进程。如果第一个参数包含 ?,则当 shell 为交互式 shell 时,该单词的剩余部分将用作标准错误输出中的 prompt。退出状态为 0,除非遇到了文件结尾。
read 会从标准输入读取一行内容,并将 IFS 变量值中的字符用作分隔符,进而将该行分为多个字段。转义字符 \ 用于去除下一个字符和续行符的任何特殊含义,除非指定了 –r 选项。
如果变量多于字段,则将剩余的变量设为空字符串。如果变量少于字段,则将剩余的字段及其中间的分隔符分配给最后一个变量。如果未指定 var,则使用变量 REPLY。
如果 var 具有二进制属性并且已指定 –n 或 –N,则读取的字节会直接存储在 var 中。
如果在第一个 var 后指定了 ?prompt,则 read 会在标准输入为终端或管道时显示一个标准错误提示。
/usr/bin/read 和 ksh88 支持以下选项:
请勿以特殊方式处理反斜杠。将各个反斜杠视为输入行的一部分。
ksh 支持以下选项:
取消设置 var,并创建一个索引数组,其中行中的每个字段从索引 0 开始。
取消设置 var,并将 var 作为复合变量读取。
一直读取到分隔符 delim,而非行的结尾。
最多读取 nsize 个字节。以字节为单位的二进制字段大小。
精确读取 nsize 个字节。以字节为单位的二进制字段大小。
从当前协同进程(而非标准输入)读取内容。文件结尾会导致 read 与协同进程断开连接,因此可创建另一协同进程。
处理输入行时,请勿对 \ 进行特殊处理。
将输入副本保存为 shell 历史记录文件中的一个条目。
从终端或管道读取时,指定以秒为单位的 timeout。
从文件描述符编号 fd(而非标准输入)读取内容。缺省值为 "0"。
从终端读取时,显示第一个变量的值,并将其作为缺省值。
支持下列操作数:
现有或非现有 shell 变量的名称。
以下 /usr/bin/read 示例会输出每行第一个字段移至该行结尾的文件:
example% while read -r xx yy do printf "%s %s\n" "$yy" "$xx" done < input_file
有关影响 read 执行的以下环境变量的描述,请参见 environ(5):LANG、LC_ALL、LC_CTYPE、LC_MESSAGES 和 NLSPATH。
确定用于分隔字段的内部字段分隔符。
提供在读取到以反斜杠结尾的行且未指定 –r 选项时,或提供输入 NEWLINE 字符后 here-document 未终止时,交互式 shell 写入标准错误的提示字符串。
将返回以下退出值:
成功完成。
检测到文件结尾或发生错误。
有关下列属性的说明,请参见 attributes(5):
|
|
csh(1)、ksh(1)、ksh88(1)、line(1)、set(1)、sh(1)、attributes(5)、environ(5)、standards(5)