read命令
作用
从标准输入中读取一行。
语法
read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]
描述
read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量。
标志
-e 在一个交互式 shell 中使用 readline 获取行。
-s 输入回显设置,能够使read命令中输入的数据不显示在监视器上。
-r 不允许反斜杠转义任何字符。
-p 输出提示语句。
-n 命令计数,指定read后面的变量所接收的字符个数,而不是等到读取换行符,但是分隔符仍然有效。
-N 在准确读取了 nchars 个字符之后返回,除非遇到了文件结束符或者读超时,任何的分隔符都被忽略。
-t 计时输入,指定read命令等待输入的秒数,当计时满时,read命令返回一个非零退出状态。
-a 将词语赋值给 ARRAY 数组变量的序列下标成员,从零开始。
-d 持续读取直到读入 DELIM 变量中的第一个字符,而不是换行符。
-i 使用 TEXT 文本作为 readline 的初始文字。
退出状态
这个命令返回下列出口值:
0 成功完成;
>0 检测到文件结束符或一个错误发生。
示例
下列脚本打印一个文件,这个文件中每行的第一个字段被移动到本行的末尾。
while read -r xx yy
do
print printf "%s %s/n" $yy $xx
done < InputFile读取一行,把它分成字段,并使用 "Please enter: " 作为提示符,请输入:
read word1?"Please enter: " word2系统显示:
Please enter:
You enter:
hello world变量 word1 的值应该是 "hello",变量 word2 应该是 "world."
为创建一个共同进程,用 print -p 写到共同进程,并用 read -p 从共同进程中读取输入,请输入:
(read; print "hello $REPLY")
print -p "world"
read-p line变量 line 的值应该是 "hello world."
为把输入行的副本保存为历史文件中的一个命令,请输入:
read -s line < input_file如果输入文件包含 "echo hello world," ,那么在历史记录文件中将会把 "echo hello world" 保存为一个命令。