readinput a line to the KornShell |
KornShell Built-in |
read
[-prs
]
[-u
[d]]
[variable?
prompt] [variable ...]
read
without options, it reads one line from
the standard input, breaks the line into fields and assigns the fields to
each variable, in order.
To determine where to break the line into fields, read
uses the built-in variable IFS
(Internal Field
Separator). Encountering any of the characters in IFS
means the end of one field and the beginning of the next.
The default value of IFS
is blank, tab and newline.
In general, a single IFS
character separates fields.
For example, if IFS
is colon (:
),
read
considers the input a::b
to have three
fields: a
, an empty field and b
; however,
if IFS
contains blanks, tabs and/or escaped newlines,
read
considers a sequence of multiple blanks,
tabs and/or escaped newlines to be a single field separator.
For example, a b
has two fields, even though there are several
blanks between the a
and b
.
The nth variable in the command line is assigned the nth
field. If there are more input fields than there are variables, the
last variable is assigned all of the unassigned fields. If there are more
variables than fields, the extra variables are assigned the null string ("").
The environment variable REPLY
is assigned the input
when no variables are given. The exit status of read
is 0,
unless it encounters end-of-file.
When the first variable parameter has the form
it defines a prompt for input. If the shell is interactive,variable?prompt
read
sends the prompt to the file descriptor
d if it is open for write and is a terminal device.
The default file descriptor for the prompt is 2.
-p
receives input from a co-process. For a description of a co-process,
see sh
.
-r
reads input in raw mode, ignoring escape conventions. For example, it
does not interpret a final backslash (\
) as a line
continuation character, but as part of the input.
-s
adds input to the command history file as well as to the variables.
-u
[d]reads input from the single digit file descriptor d, rather than from the standard input. The default file descriptor is 0.
provides a list of users from theIFS=';' while read name junk do echo $name done </etc/passwd
/etc/passwd
file.
IFS
contains a string of characters to be used as internal field separators.
PS2
contains the prompt string that an interactive shell uses when it
reads a line ending with a backslash and you did not specify the
-r
option, or if a here-document is not terminated
after you enter a newline.
REPLY
contains the input (including separators) if you did not specify any variables.
0
Successful completion.
1
Failure due to any of the following:
-u
2
Failure due to an invalid command line argument.
You tried to read a file descriptor that was not opened for reading.
read
is a built-in command of the Bourne Shell and KornShell
on UNIX systems. The Bourne Shell does not implement parameters of the form
variable?
prompt, or any options.
The -p
, -s
, and -u
options are extensions to the POSIX standard.