read 命令
用途
从标准输入中读取一行。
语法
阅读 [-p] [ -r ] [-s][-u [ n ]][ VariableName?提示]
描述
read 命令从标准输入中读取一行,并使用 IFS (内部字段分隔符) 变量中的字符作为分隔符将输入行中每个字段的值分配给 shell 变量。 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?提示 | 指定一个变量的名称和一个要使用的提示符。 当 Korn shell 是交互式时,它会将提示符写到标准错误,并执行输入。 Prompt 包含多于一个的字,必须用单引号或双引号括起来。 |
| VariableName... | 指定一个或多个由空格分隔的变量名。 |
退出状态
本命令返回以下退出值:
| 项 | 描述 |
|---|---|
| 重大安全事件数量 | 成功完成。 |
| > 0 | 检测到文件结束符或一个错误发生。 |
示例
- 以下脚本打印一个文件,其中每行的第一个字段移至行尾:
while read -r xx yy do print printf "%s %s/n" $yy $xx done < InputFile - 要读取一行并将其拆分为字段,并使用
请输入:
作为提示,请输入:
系统显示:read word1?"Please enter: " word2
word1 变量的值应该具有Please enter: You enter: hello world你好
,而 word2 应该具有世界
。 - 要创建共同进程,请使用 print -p 来写入共同进程,并使用 read -p 来读取共同进程的输入,请输入:
line 变量的值应该具有(read; print "hello $REPLY") print -p "world" read -p linehello world
。 - 要将输入行的副本作为命令保存在历史记录文件中,请输入:
如果 input_file 包含read -s line < input_fileecho hello world
,那么echo hello world
将另存为历史记录文件中的命令。